mysql outer join报错,Mysql各种连接关系JOIN说明

Mysql各种连接关系JOIN说明

0 常见join连接关系说明

1INNER JOIN

2 LEFT JOIN

3 RIGHT JOIN

4 FULL 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

5f324dda3b7ef7a0e0f3c09e426e61f8.png

# 表B

SELECT * FROM userinfo

ca09275afbfb019172d51619f60cbf59.png

# INNER JOIN查询

SELECT

*

FROM

userinfo A

INNER JOIN `user` B ON A.id = B.id

32f58724b19ad0660b38be4360a65d37.png

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

e7d4d6d5b08084d3f3751245d99ce052.png

3 RIGHT JOIN

应用场景:

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

语法:

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

说明:

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

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

案例:

# RIGHT JOIN 连接

SELECT

*

FROM

userinfo A

RIGHT JOIN `user` B ON A.id = B.id

0b1770aa9c19d2bf378360c6f3a80015.png

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不支持全连接

2991fd1c5f2a98093afb345171a8496c.png

# 解决 使用左连接 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

38b49313e1711278c966e4713efc6ec5.png

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值