美文网首页
SQL之各种连接Join详解

SQL之各种连接Join详解

作者: Cute_小肥鸡 | 来源:发表于2020-07-21 11:36 被阅读0次

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

最常见的 JOIN 类型:INNER JOIN(简单的 JOIN)、LEFT JOIN、RIGHT JOIN、FULL JOIN,其中前一种是内连接,后三种是外链接。
  • left join (左连接):返回包括左表中的所有记录和右表中连接字段相等的记录。
  • right join (右连接):返回包括右表中的所有记录和左表中连接字段相等的记录。
  • inner join (等值连接):只返回两个表中连接字段相等的行。
  • full join (全外连接):返回左右表中所有的记录和左右表中连接字段相等的记录。

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

Table A(左边)
id name
1 Google
2 淘宝
3 微博
4 Facebook
Table B(右边)
id address
1 美国
5 中国
3 中国
6 美国

一、INNER JOIN

内连接是最常见的一种连接,只连接匹配的行。

inner join语法

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

注释:INNER JOIN与JOIN是相同

INNER JOIN产生的结果集中,是1和2的交集。
select * from Table A inner join Table B
on Table A.id=Table B.id

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

id name address
1 Google 美国
3 微博 中国

二、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输出结果如下:

id name address
1 Google 美国
2 淘宝 null
3 微博 中国
4 Facebook null

三、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

RIGHT JOIN产生表2的完全集,而1表中匹配的则有值,没有匹配的则以null值取代。
select * from Table A right join Table B
on Table A.id=Table B.id

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

id name address
1 Google 美国
5 null 中国
3 微博 中国
6 null 美国

四、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
FULL OUTER JOIN产生1和2的并集。但是需要注意的是,对于没有匹配的记录,则会以null做为值。
select * from Table A full outer join Table B
on Table A.id=Table B.id

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

id name address
1 Google 美国
2 淘宝 null
3 微博 中国
4 Facebook null
5 null 中国
6 null 美国

相关文章

  • SQL 连接查询

    SQL各种连接查询详解(左连接、右连接..) 一、交叉连接(cross join) 交叉连接(cross join...

  • SQL之各种连接Join详解

    SQL JOIN 子句用于把来自两个或多个表的行结合起来,基于这些表之间的共同字段。 最常见的 JOIN 类型:I...

  • 数据库七种连接方式总结

    一、join图 二、sql语句准备 部门表数据 三、七种连接方式详解 1、内连接 inner join 内连接in...

  • SQL 联表查询

    SQL——左连接(Left join)右连接(Right join)内连接(Inner join)[https:/...

  • SQL inner join和left join on

    SQL中的查询连接有 inner join(内连接),left join(左连接),right join(右连接)...

  • left join,right join,inner join,

    sql中的连接查询有inner join(内连接)、left join(左连接)、right join(右连接)、...

  • SQL表连接(INNER JOIN, LEFT JOIN, RI

    SQL表连接(INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL OUTER JOIN...

  • MySQL 中的各种 JOIN

    本文主要介绍 SQL 标准中定义的各种连接的意义和区别,例如,交叉连接(CROSS JOIN)、内连接(INNER...

  • left join,right join,inner join,

    [left join,right join,inner join,full join之间的区别] sql中的连接查...

  • 图解 SQL 中各种连接 JOIN

    先用文字来捋一下思路,数据库操作中无非就是「增删查改」,其中「查」用得最多且最复杂,变化多端。查询的时候,我们可以...

网友评论

      本文标题:SQL之各种连接Join详解

      本文链接:https://www.haomeiwen.com/subject/phxikktx.html