SQL的各类链接Join详解,都须要熟练掌握!

图片


做者:章朔数据库

www.cnblogs.com/reaptomorrow-flydream/app

SQL JOIN 子句用于把来自两个或多个表的行结合起来,基于这些表之间的共同字段。ide

最多见的 JOIN 类型:SQL INNER JOIN(简单的 JOIN)、SQL LEFT JOIN、SQL RIGHT JOIN、SQL FULL JOIN,其中前一种是内链接,后三种是外连接。ui

图片

假设咱们有两张表,Table A是左边的表,Table B是右边的表。spa

1、INNER JOIN

内链接是最多见的一种链接,只链接匹配的行。3d

inner join语法code

select column_name(s)
from table 1
INNER JOIN table 2
ON
table 1.column_name=table 2.column_name

注释:INNER JOIN与JOIN是相同orm

图片

INNER JOIN产生的结果集中,是1和2的交集。blog


select * from Table A inner join Table B
on Table A.id=Table B.id

执行以上SQL输出结果以下:图片

图片

2、LEFT JOIN

LEFT JOIN返回左表的所有行和右表知足ON条件的行,若是左表的行在右表中没有匹配,那么这一行右表中对应数据用NULL代替。

LEFT JOIN 语法

select column_name(s)
from table 1
LEFT JOIN table 2
ON table 1.column_name=table 2.column_name

注释:在某些数据库中,LEFT JOIN 称为LEFT OUTER JOIN

图片

LEFT JOIN产生表1的彻底集,而2表中匹配的则有值,没有匹配的则以null值取代。


select * from Table A left join Table B
on Table A.id=Table B.id

执行以上SQL输出结果以下:

image.png

3、RIGHT JOIN

RIGHT JOIN返回右表的所有行和左表知足ON条件的行,若是右表的行在左表中没有匹配,那么这一行左表中对应数据用NULL代替。

RIGHT JOIN语法

select column_name(s)
from table 1
RIGHT JOIN table 2
ON table 1.column_name=table 2.column_name

注释:在某些数据库中,RIGHT JOIN 称为RIGHT OUTER JOIN

image.png

RIGHT JOIN产生表2的彻底集,而1表中匹配的则有值,没有匹配的则以null值取代。


select * from Table A right join Table B
on Table A.id=Table B.id

执行以上SQL输出结果以下:

图片

4、FULL OUTER JOIN

FULL JOIN 会从左表 和右表 那里返回全部的行。若是其中一个表的数据行在另外一个表中没有匹配的行,那么对面的数据用NULL代替

FULL OUTER JOIN语法

select column_name(s)
from table 1
FULL OUTER JOIN table 2
ON table 1.column_name=table 2.column_name


image.png

FULL OUTER JOIN产生1和2的并集。可是须要注意的是,对于没有匹配的记录,则会以null作为值。


select * from Table A full outer join Table B
on Table A.id=Table B.id

执行以上SQL输出结果以下:

image.png

图片

相关文章
相关标签/搜索