​​MySql 中Join操作的用法!

​​MySql 中Join操作的用法!

 

SQL标准中的Join的类型:

006fRELkly4h26006lswwj30qv0h2wfo

首先,设置表employees和department的数据为:

006fRELkly4h26006isuvj30hn08pta4
006fRELkly4h26002lb8wj30hi08sgn7

1、inner join … on操作类型

内连接inner join是基于连接谓词将两张表(如A和B)的列组合在一起的,产生新的结果表。

例子:

SELECT *

FROM employees a

inner join department b

ON a.department_id = b.department_id

查询结果为:

006fRELkly4h2600601abj30wb043aar

注意:inner join 可以简写为join,该查询得出的结果为两张表共同的部分。效果和使用where语句一样,如下语句:

SELECT *

FROM employees a, department b

WHERE a.department_id = b.department_id

2、left join … on操作类型

左外连接又 称为左连接,以A表为基础,会显示A表的所有记录,如果匹配不到B表的记录,会显示null。

例子:

SELECT *

FROM employees a

LEFT JOIN department b

ON a.department_id = b.department_id

查询结果为:

006fRELkly4h26005tukhj30w404tq3q

可以看到,employees_id = 6 的department_id是null,因为该员工未分配部门。

因此,可以利用这个特征,找出未被分配员工的名单,其SQL语句如下:

SELECT *

FROM employees a

LEFT JOIN department b

ON a.department_id = b.department_id

WHERE a.department_id is NULL

查询结果为:

006fRELkly4h26006kgm8j30w3029wep

注意:在上面的语句中,添加了WHERE条件语句,找到等于空的部门id从而找到,未被分配员工的名单。

该方法:亦可以用于优化not in的操作,通常not in不会使用索引操作,而left join 则可以使用索引操作。

3、right join …. on操作类型

右外连接又称为右连接,以B表为基础,会显示B表的所有记录,如果匹配不到A表的记录,会显示null。

例子:

SELECT *

FROM employees a

RIGHT JOIN department b

ON a.department_id = b.department_id

查询结果为:

006fRELkly4h26006jz8fj30vp04uq3t

可以看到部门这张表的信息是全部展示出来的,而在部门id为4时的员工是空的,因此,可以利用这个特点找出部门中员工格式为0的部门,其sql语句如下:

SELECT *

FROM employees a

RIGHT JOIN department b

ON a.department_id = b.department_id

WHERE a.employees_id is NULL

查询结果为:

006fRELkly4h26006tfi9j30vz023glw

4、full join … on操作类型

在MySql中是不支持full join … on全连接操作,只能通过左连接和右连接的合集来实现,其代码如下:

SELECT *

FROM employees a

LEFT JOIN department b

ON a.department_id = b.department_id

UNION ALL

SELECT *

FROM employees a

RIGHT JOIN department b

ON a.department_id = b.department_id

结果为:

006fRELkly4h26002zknfj30w908m0ub

5、cross join 操作

交叉连接(cross join),又称笛卡尔连接(cartersian join)或叉乘(product),如果A和B是两个集合,它们的交叉连接就标记为:A*B

例子:

SELECT *

FROM employees a

CROSS JOIN department b

查询结果为:

006fRELkly4h26005tyehj31gv0cpq5q

可以看到产生的结果集为两个表各自个数的乘积,通常在实际操作中要避免这种操作。

 

学习资料见知识星球。

以上就是今天要分享的技巧,你学会了吗?若有什么问题,欢迎在下方留言。

快来试试吧,小琥 my21ke007。获取 1000个免费 Excel模板福利​​​​!

更多技巧, www.excelbook.cn

欢迎 加入 零售创新 知识星球,知识星球主要以数据分析、报告分享、数据工具讨论为主;

2022021703525891-98

你将获得:

1、价值上万元的专业的PPT报告模板。

2、专业案例分析和解读笔记。

3、实用的Excel、Word、PPT技巧。

4、VIP讨论群,共享资源。

5、优惠的会员商品。

6、一次付费只需99元,即可下载本站文章涉及的文件和软件。

文章版权声明 1、本网站名称:Excelbook
2、本站永久网址:http://www.excelbook.cn
3、本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长王小琥进行删除处理。
4、本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
5、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报。
6、本站资源大多存储在云盘,如发现链接失效,请联系我们我们会第一时间更新。

THE END
分享
二维码
< <上一篇
下一篇>>