【MySQL】七种JOIN连接详解

1.内连接
内连接查询出的数据是两张表的交集,即上图中红色所表示的部分。

2.左外连接
左外链接如图中红色部分的内容,即包含左边表的全部行(不管右边的表中是否存在与它匹配的行),和右边表中全部匹配的行。

3.右外链接
右外链接如图中红色部分的内容,即包含右边表的全部行(不管左边的表中是否存在与它匹配的行),和左边表中全部匹配行。

 4.左连接

左连接如图中红色部分的内容,查询出左表独有的数据

 解析:其实上图就是在左外连接的基础上进行的,左外连接得到了左表,但是左表里还包含了一部分左右表都具有相同数据的区             域,这时需要将这部分相同数据去掉,去除的条件就是B.key IS NULL 

5.右连接

 如果看懂了上面的左连接,那么右连接大同小异,就是查询出右表独有的数据

6.全连接(Mysql中不支持下图写法)

查询出左右两表的所有数据 

但是!MySQL中并不支持这种写法,所以只能通过别的方法。

A、B的所有也就是A的独有、B的独有 和A、B的共同拥有的数据

Mysql中可以使用:select * from Table A left join Table B on A.Key = B.Key       (找出A的所有)

                               union            (去重)

                               select * from Table A right join Table B on A.Key = B.Key     (找出B的所有)

     

7.全外连接(Mysql中不支持下图写法)

左右表的共有数据之外的数据查询 

筛选出对于A表而言B为空,对于B表而言A为空的

MySQL中也不支持这种写法,所以只能通过别的方法。

其实全外连接也就是A的独有+B的独有

Mysql语法:          select * from Table A left join Table B on A.Key = B.Key  where B.Key is null      (找出A的独有)

                               union            (去重)

                               select * from Table A right join Table B on A.Key = B.Key where A.Key is null    (找出B的独有)

猜你喜欢

转载自blog.csdn.net/weixin_41963657/article/details/89644716
今日推荐