SQL学习笔记(四)

SQL 连接(JOIN)

join用于把来自两个或者多个的表的行结合起来

基于这些表之间的共同字段。

LEFT JOIN

SELECT * FROM TableA A LEFT JOIN TableB B ON A.Key = B.Key

SELECT * FROM TableA A LEFT JOIN TableB B ON A.Key = B.Key WHERE B.Key IS NULL

 

RIGHT JOIN

SELECT * FROM TableA A RIGHT JOIN TableB ON A.Key=B.Key

SELECT * FROM TableA A RIGHT JOIN TableB ON A.Key=B.Key WHERE A.Key IS NULL

 

INNER JOIN (它跟JOIN相同)

SELECT * FROM TableA A INNER JOIN TableB ON A.Key=B.Key

 

OUTER JOIN

SELECT * FROM TableA A FULL OUTER JOIN TableB ON A.Key=B.Key

SELECT * FROM TableA A FULL OUTER JOIN TableB ON A.Key=B.Key WHERE A.Key IS NULL OR B.Key IS NULL

 

其中INNER JOIN 最常见最简单,从多个表中返回满足JOIN条件的所有行

INNER JOIN 如果表中至少一个匹配,则返回行

LEFT JOIN:即使右表中没有匹配,也从左表返回所有的行

RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行

FULL JOIN:只要其中一个表中存在匹配,则返回行

 

在使用JOIN时,ON 和 WHERE 条件的区别如下:

1、ON 条件是在生成临时表时使用的条件,它不管ON中的条件是否为真,都会返回左边表中的记录

2、WHERE条件是在临时表生成好后,再对临时表进行过滤的条件。这时已经没有LEFT JOIN的含义(必须返回左边表的记录)了。条件不为真的就全部过滤掉。

 

LEFT JOIN 关键字

从左边TABLE1返回所有的行,即使右表TABLE2中没有匹配。如果右表中没有匹配,则结果为NULL

 

RIGHT JOIN 关键字

从右表TABLE2返回所有的行,即使左表(TABLE1)中没有匹配。如果左表中没有匹配,则结果为NULL

 

posted @ 2022-04-26 16:59  黑羽青衣  阅读(16)  评论(0编辑  收藏  举报