MYSQL:一道题学会全连接和两表并集

表的并联:union :去除并联的重复项;union all:不去除重复项

MySQL提供了连接查询的函数,可以把多张表联合起来查询

1、内连接查询

表1 join 表2 on 连接条件

2、外连接查询

(1)左外连接:表1 left join 表2 on 连接条件

左外连接显示左表中的全部数据,右表中只显示满足条件的数据,如果左表中的数据右表没有连接点,则填充null。

(2)右外连接:表1 rigth join 表2  on 连接条件

右外连接显示右表中的全部数据,左表中只显示满足条件的数据,如果右表中的数据左表没有连接点,则填充null。

3、全连接

MySQL中不支持全连接,如果想全连接可以通过左外连接、右外连接、union共同操作,详见下面的例子。

有两张表,一张记录员工的Id和姓名,另一张表记录员工的id和薪水。要求输出一张同时包含所有员工姓名和薪水的表,如果信息丢失则填充null。

 很明显,Employee表中没有id为1的员工薪水,Salaries表中没有id为2的员工姓名,在两张表的员工id同时不全的情况下,左外连接和右外连接都只能显示出部分员工信息,因此需要长时全连接。

操作步骤:

1、首先将Employee表与Salaries表进行左外连接,找到没有薪水信息的员工

/2、再将Employee表与Salaries表右外连接,找到没有姓名信息的员工。

/3.最后使用union将两张表联合起来

代码如下

    SELECT
		e.employee_id,
		e.NAME,
		s.salary 
	FROM
		employees e
		LEFT JOIN salaries s ON e.employee_id = s.employee_id 
	UNION
	SELECT
		s.employee_id,
		e.NAME,
		s.salary 
	FROM
		employees e
		RIGHT JOIN salaries s ON e.employee_id = s.employee_id 

  • 10
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值