join连接查询八种

本文介绍了SQL中的JOIN操作,包括左连接(LEFTJOIN)、右连接(RIGHTJOIN)、内连接(INNERJOIN)、A表独有和B表独有查询,以及在MySQL中实现全连接(FULLJOIN)的替代方法和自连接(SELFJOIN)。这些概念对于理解和操作数据库中的数据至关重要。
摘要由CSDN通过智能技术生成
JOIN连接查询
  1. 左连接
-- A的全集,B没有则值显示为空
SELECT
	* 
FROM
	t_emp a
	LEFT JOIN t_dept b ON a.deptId = b.id

image.png

  1. 右连接
-- B的全集,A没有则值为空
SELECT
	* 
FROM
	t_emp a
	RIGHT JOIN t_dept b ON a.deptId = b.id

image.png

  1. A表独有
SELECT
	* 
FROM
	t_emp a
	LEFT JOIN t_dept b ON a.deptId = b.id 
WHERE
	b.id IS NULL

image.png

  1. 内连接
-- AB两表共有
SELECT
	* 
FROM
	t_emp a
	INNER JOIN t_dept b ON a.deptId = b.id 

image.png

  1. B表独有
SELECT
	* 
FROM
	t_emp a
	RIGHT  JOIN t_dept b ON a.deptId = b.id 
	where a.deptId is null

image.png

  1. 全表外连接(AB全有)

MYSQL不支持FULL JOIN,下面替代方法:left join + union(可去除重复数据)+ right join

SELECT * FROM t_emp a LEFT JOIN t_dept b ON a.deptId = b.id
UNION
SELECT * FROM t_emp a RIGHT JOIN t_dept b ON a.deptId = b.id

image.png

  1. 全连接(A独有+B独有)
SELECT * FROM t_emp a LEFT JOIN t_dept b ON a.deptId = b.id WHERE b.id IS NULL 
	UNION
SELECT * FROM t_emp a RIGHT JOIN t_dept b ON a.deptId = b.id WHERE a.deptId IS NULL

image.png

  1. 自连接(如果连接的表中有列名相同,并且连接的条件就是列明相等,那么on条件可以换成using)
SELECT * FROM t_emp a inner JOIN t_dept b ON a.id = b.id
-- 等效
SELECT * FROM t_emp a inner JOIN t_dept b USING (id)

image.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值