Mysql各种连接关系JOIN说明

0 常见join连接关系说明

类型解释说明
INNER JOIN内连接关键字在表中存在至少一个匹配时返回行(交集)
LEFT JOIN(外)左连接关键字从左表(table1)返回所有的行,即使右表(table2)中没有匹配。如果右表中没有匹配,则结果为 NULL
RIGHT JOIN(外)右连接关键字从右表(table2)返回所有的行,即使左表(table1)中没有匹配。如果左表中没有匹配,则结果为 NULL
FULL JOIN(外)全连接关键字只要左表(table1)和右表(table2)其中一个表中存在匹配,则返回行.(并集)

1INNER JOIN

应用场景:

  • 如果需要取的表中的字段信息为必须不为空字段

语法:

  • select * from 表A innner join 表B on 条件

说明:

  • 取A表和B表的交集,条件所取数据均有值,为空则舍去

案例:

# 表A
SELECT * FROM user

image-20210310225423298

# 表B
SELECT * FROM userinfo

image-20210310225543920

#  INNER JOIN查询
SELECT
	* 
FROM
	userinfo A
	INNER JOIN `user` B ON A.id = B.id

image-20210310225735046

2 LEFT JOIN

应用场景:

  • 如果需要取的表中的字段信息可为空

语法:

  • select * from 表A left join 表B on 条件

说明:

  • 以A表为准,取A表的全部数据,联接B表的数据,匹配则展示数据,否则用null填充

案例:

#  LEFT JOIN 连接
SELECT
	* 
FROM
	userinfo A
	 LEFT JOIN `user` B ON A.id = B.id

image-20210310225909269

3 RIGHT JOIN

应用场景:

  • 如果需要取的表中的字段信息可为空

语法:

  • select * from 表A right join 表B on 条件

说明:

  • 以B表为准,取B表的全部数据,联接A表的数据,匹配则展示数据,否则用null填充

LEFT JOINRIGHT JOIN,可将两表位置互换得到.

案例:

#  RIGHT JOIN 连接
SELECT
	* 
FROM
	userinfo A
	 RIGHT JOIN `user` B ON A.id = B.id

image-20210310230052633

4 FULL JOIN

应用场景:

  • 如果需要取的表中的字段信息为最全面的

语法:

  • select * from 表A FULL OUTER JOIN 表B on 条件

说明:

  • 左表和右表那里返回所有的行。如果一个表的数据行在另一个表中没有匹配的行,那么对面的数据用NULL代替.

案例:

# FULL JOIN 连接
SELECT
	* 
FROM
	userinfo AS A
	FULL OUTER JOIN `user`AS B ON A.id = B.id
# 报错,查询资料Mysql不支持全连接

image-20210310231206224

# 解决 使用左连接 union 右连接  
# union 会去  union all 不会去重
SELECT
	* 
FROM
	userinfo A
	RIGHT JOIN `user` B ON A.id = B.id 
UNION 
SELECT
	* 
FROM
	userinfo A
	 LEFT JOIN `user` B ON A.id = B.id

image-20210310231405499

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值