id
name 1
Google 2
淘宝3
微博4
Facebook id address 1美国5中国3中国6美国id name address
1Google 美国
3微博
中国SQL 的各种连接Join 详解
SQL JOIN ⼦句⽤于把来⾃两个或多个表的⾏结合起来,基于这些表之间的共同字段。
最常见的 JOIN 类型:SQL INNER JOIN (简单的 JOIN )、SQL LEFT JOIN 、SQL  RIGHT JOIN 、SQL FULL JOIN ,其中前⼀种是内连接,后三种是外链接。
假设我们有两张表,Table A 是左边的表,Table B 是右边的表。
⼀、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 输出结果如下:
⼆、LEFT JOIN
id name address 1Google 美国
2淘宝null
3微博中国4Facebook null
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 输出结果如下:
三、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 1Google 美国5null 中国
3微博
中国6null
美国id name
join on是什么连接address 1Google
美国2淘宝
null 3微博
中国4Facebook null 5null
中国6null 美国
四、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 输出结果如下:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。