MySQL多表查询

这是两个表多表查询,需要一个连接条件customer_id。如果有n个表实现多表查询,至少需要n-1个连接条件。如果少于n-1个,就会出现笛卡尔积的错误

SELECT orders.order_id, customers.customer_name
FROM orders
INNER JOIN customers
ON orders.customer_id = customers.customer_id;   

多表查询的分类:

①:等值连接VS非等值连接

②:自连接VS非自连接

SELECT emp.emp_id,emp.last_name
from emp,mgr
WHERE emp.manager_id=mgr.employee_id;

③:内连接与外连接

SELECT 列名列表
FROM 表1
INNER JOIN 表2
ON 表1.关联列 = 表2.关联列;

左连接:

SELECT 列名列表
FROM 表1
LEFT JOIN 表2
ON 表1.关联列 = 表2.关联列;

右连接:

SELECT 列名列表
FROM 表1
RIGHT JOIN 表2
ON 表1.关联列 = 表2.关联列;

但是MySQL不支持全外连接:

SELECT 列名列表
FROM 表1
FULL OUTER JOIN 表2
ON 表1.关联列 = 表2.关联列;

union和union all 

UNION用于合并两个或多个SELECT语句的结果集。它会自动去除合并后结果集中的重复行。​
假设有两个表TableA和TableB,结构相同,都包含Column1和Column2两列。我们想要获取这两个表中不重复的所有记录,可以使用如下代码:

SELECT Column1, Column2
FROM TableA
UNION
SELECT Column1, Column2
FROM TableB;

UNION ALL同样用于合并多个SELECT语句的结果集,但与UNION不同的是,它不会去除重复行。它会直接将所有查询结果按顺序连接起来。​

还是以上述TableA和TableB为例,若使用UNION ALL,代码如下:

SELECT Column1, Column2
FROM TableA
UNION ALL
SELECT Column1, Column2
FROM TableB;

从性能角度来看,UNION ALL通常会比UNION更快。因为UNION需要对合并后的结果集进行去重操作,这涉及到额外的排序和比较工作。而UNION ALL只是简单地将结果集连接起来,无需进行去重的复杂操作。​
所以,当我们确定合并的结果集中不会出现重复行,或者即使有重复行也不影响业务需求时,优先使用UNION ALL可以提高查询性能,减少数据库的处理开销。

自然连接:

        自然连接会遍历Employees表和Departments表,将Employees表中DepartmentID值与Departments表中DepartmentID值相同的行组合在一起,形成最终的结果集。并且,由于自然连接会自动根据同名列进行匹配,结果集中不会出现重复的列(即DepartmentID在结果集中只会出现一次)。

USING连接:

SELECT *
FROM Employees
JOIN Departments
USING (DepartmentID);

在这个查询中,通过USING (DepartmentID)明确指定了仅依据DepartmentID列进行连接。这样,我们可以精准控制连接条件,避免其他无关同名列的干扰。同时,与自然连接类似,在结果集中DepartmentID列只会出现一次。

表连接的约束条件:WHERE,ON,USING

WHERE 子句在表连接中用于筛选符合特定条件的行。它的作用范围是整个查询结果集。

ON 子句专门用于指定表连接的条件。它在连接操作执行时就发挥作用,决定哪些行应该被连接在一起。

USING 子句也是用于指定连接条件的一种方式,它与 ON 子句有相似之处,但有其独特的特点。USING 子句用于连接两个表中具有相同列名的列。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/39445.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue3 项目的最新eslint9 + prettier 配置

注意:eslint目前升级到9版本了 在 ESLint v9 中,配置文件已经从 .eslintrc 迁移到了 eslint.config.js 配置的方式和之前的方式不太一样了!!!! 详见自己的语雀文档:5、新版eslint9prettier 配…

目标检测20年(三)

对这篇论文感兴趣的小伙伴可以订阅笔者《目标检测》专栏,关注笔者对该文献的阅读和理解。 前两篇解读链接: 目标检测20年(一)-CSDN博客 目标检测20年(二)-CSDN博客 目录 四、 检测器的加速发展 4.1 特…

LLM之RAG实战(五十二)| 如何使用混合搜索优化RAG 检索

在RAG项目中,大模型生成的参考内容(专业术语称为块)来自前一步的检索,检索的内容在很大程度上直接决定了生成的效果,因此检索对于RAG项目至关重要,最常用的检索方法是关键字搜索和语义搜索。本文将分别介绍…

2025-3-24 leetcode刷题情况(动态规划——01背包)

一、416.分割等和子集 1.题目描述 给你一个 只包含正整数 的 非空 数组 nums 。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。 2.代码 3.思路 首先进行边界检查,若数组为空则直接返回 false。接着计算数组元素总和&#xff…

Lineageos 22.1(Android 15)实现负一屏

一、前言 方案是参考的这位大佬的,大家可以去付费订阅支持一波。我大概理一下Android15的修改。 大佬的方案代码 二、Android15适配调整 1.bp调整,加入aidl引入,这样make之后就可以索引代码了 filegroup {name: "launcher-src"…

5G NR PRACH 随机接入前导序列

目录 一、前言二、随机接入前导序列的产生三、 N c s N_{cs} Ncs​的规划3.1、 L R A L_{RA} LRA​839 N c s N_{cs} Ncs​规划3.2、 L R A L_{RA} LRA​139 N c s N_{cs} Ncs​规划3.3、 N c s N_{cs} Ncs​确定方法 四、根序列的规划4.1、根序列的选择与确定4.2、循环移位 …

【VUE】day07 路由

【VUE】day07 路由 1. 路由2. 前端路由的工作方式3. 实现简易的前端路由4. 安装和配置路由4.1 安装vue-router包4.2 创建路由模块4.3 导入并挂在路由模块 5. 在路由模块中声明路由的对应关系5.1 router-view 1. 路由 在 Vue.js 中,路由(Routing&#xf…

WPS宏开发手册——使用、工程、模块介绍

目录 系列文章前言1、开始1.1、宏编辑器使用步骤1.2、工程1.3、工程 系列文章 使用、工程、模块介绍 JSA语法 第三篇练习练习题,持续更新中… 前言 如果你是开发人员,那么wps宏开发对你来说手拿把切。反之还挺吃力,需要嘻嘻&#xf…

数学概念学习

# 欧式空间 ## 定义 日常生活观察到的几何空间:一维、平面和三维空间。 ## 点与向量 是欧式空间的基本元素。 ## 距离和内积 距离:通过欧几里得距离公式计算 内积(点积): 通过两个向量的内积来测量他们的相似性&…

InnoDB 引擎核心知识点

InnoDB 引擎核心知识点 6.1 逻辑存储结构 表空间(Tablespace):所有数据逻辑上存储在一个表空间中,物理上可能由多个文件组成。段(Segment):分为数据段(B树叶子节点)、索引…

C++《红黑树》

在之前的篇章当中我们已经了解了基于二叉搜索树的AVL树,那么接下来在本篇当中将继续来学习另一种基于二叉搜索树的树状结构——红黑树,在此和之前学习AVL树类似还是通过先了解红黑树是什么以及红黑树的结构特点,接下来在试着实现红黑树的结构…

java实现coze平台鉴权+工作流调用(踩坑记录)

问题偏多建议大家看完文章后再开始实现 OAuth鉴权 https://www.coze.cn/open/docs/developer_guides/preparation https://www.coze.cn/open/docs/developer_guides/oauth_apps OAuth 授权码鉴权 https://www.coze.cn/open/docs/developer_guides/oauth_code 创建OAuth应…

2025年优化算法:龙卷风优化算法(Tornado optimizer with Coriolis force,TOC)

龙卷风优化算法(Tornado optimizer with Coriolis force)是发表在中科院二区期刊“ARTIFICIAL INTELLIGENCE REVIEW”(IF:11.7)的2025年智能优化算法 01.引言 当自然界的狂暴之力,化身数字世界的智慧引擎&…

面试题分享-多线程顺序打印奇偶数

目录 1.题目详情 2.解题思路 2.1.分析题目 2.2.解析思路 3.代码实现 4.运行结果 1.题目详情 昨天刷抖音,遇到一个面试题,描述如下: 请使用两个线程,分别顺序交替打印奇数和偶数,直到10为止。例如有两个线程&#…

QuecPython 网络协议之TCP/UDP协议最祥解析

概述 IP 地址与域名 IP 地址是网络中的主机地址,用于两台网络主机能够互相找到彼此,这也是网络通信能够成功进行的基础。IP 地址一般以点分十进制的字符串来表示,如192.168.1.1。 ​ 我们日常访问的网站,其所在的服务器主机都有…

React - LineChart组件编写(用于查看每日流水图表)

一、简单版本 LineChart.tsx // src/component/LineChart/LineChart.tsx import React, {useEffect,useRef,useImperativeHandle,forwardRef,useMemo,useCallback, } from react; import * as echarts from echarts/core; import type { ComposeOption } from echarts/core; …

医学图像分割数据集肺分割数据labelme格式6299张2类别

数据集格式:labelme格式(不包含mask文件,仅仅包含jpg图片和对应的json文件) 图像分辨率:1024x1024 图片数量(jpg文件个数):6299 标注数量(json文件个数):6299 标注类别数:2 标注类别名称:["leftl…

帕金森病致生活艰难,如何缓解心理负担?

你是否留意到身边有人手部不由自主地颤抖,且肢体变得僵硬,行动也愈发迟缓?这很可能是帕金森病的症状。帕金森病是一种常见的神经系统退行性疾病,多发生于中老年人。​ 静止性震颤往往是帕金森病的首发症状,患者在安静状…

从零构建大语言模型全栈开发指南:第二部分:模型架构设计与实现-2.1.1自注意力机制(Scaled Dot-Product Attention)的逐行代码实现

👉 点击关注不迷路 👉 点击关注不迷路 👉 点击关注不迷路 文章大纲 2.1.1 自注意力机制(Scaled Dot-Product Attention)的逐行代码实现1. 自注意力机制的核心原理与数学表达1.1 注意力计算的三元组:`Q, K, V`2. 逐行代码实现与解析2.1 输入嵌入与权重矩阵初始化2.2 完…

机械臂【逆运动学】

回顾正运动学fk: IK: 几何法 代数法 六轴 456轴交再同一点 有解析解 下列公式为正运动学部分结论 a和d是长度 ,theta和alfa是角度 **疑问:alfa00? Z轴互相平行 ** 已知末端要在空间XYZ处如下 绿色项&#x…