​​MySql 中Join操作的用法!

  • A+
所属分类:SQL技巧

​​MySql 中Join操作的用法!

 

SQL标准中的Join的类型:

​​MySql 中Join操作的用法!

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

​​MySql 中Join操作的用法!
​​MySql 中Join操作的用法!

1、inner join … on操作类型

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

例子:

SELECT *

FROM employees a

inner join department b

ON a.department_id = b.department_id

查询结果为:

​​MySql 中Join操作的用法!

注意: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

查询结果为:

​​MySql 中Join操作的用法!

可以看到,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

查询结果为:

​​MySql 中Join操作的用法!

注意:在上面的语句中,添加了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

查询结果为:

​​MySql 中Join操作的用法!

可以看到部门这张表的信息是全部展示出来的,而在部门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

查询结果为:

​​MySql 中Join操作的用法!

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

结果为:

​​MySql 中Join操作的用法!

5、cross join 操作

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

例子:

SELECT *

FROM employees a

CROSS JOIN department b

查询结果为:

​​MySql 中Join操作的用法!

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

 

学习资料见知识星球。

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

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

更多技巧, www.excelbook.cn

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

​​MySql 中Join操作的用法!

你将获得:

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

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

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

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

5、优惠的会员商品。

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

  • 我的微信
  • weinxin
  • 我的知识星球
  • weinxin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: