本文简单说明一下SQL中两张表的各种关联(不包括cross Joins和自关联),主要简单说明一下以下7种关联
-
INNER JOIN
-
LEFT JOIN
-
RIGHT JOIN
-
OUTER JOIN
-
LEFT JOIN EXCLUDING INNER JOIN
-
RIGHT JOIN EXCLUDING INNER JOIN
-
OUTER JOIN EXCLUDING INNER JOIN
Inner JOIN
inner join应该是最简单、最易理解的一种关联,它执行查询之后,返回所有A表中同时在B表中的数据
SQL:
Left JOIN
left join 不仅会返回inner join查询的结果,还会返回仅在A表中的数据(即返回A表中的全部数据)
SQL:
RIGHT JOIN
right join返回同时在A表和B表的数据,同时也会返回在B表不在A表中的数据(即返回B表的全量数据,跟left join刚好相反)
SQL:
Outer JOIN
outer join,也叫full outer join或者full join,该查询会返回两张表的全量数据,跟union不同之处在于,outer join会根据关联条件做笛卡尔积,即使A、B表中关联条件不成立的记录也会返回
SQL:
Left Excluding JOIN
left excluding join,该查询会返回A表所有不在B表中的记录,即只返回A且不在B表中的记录
SQL:
Right Excluding JOIN
right excluding join,该查询会返回所有不在A表中的记录,即返回只在B表中的记录
SQL:
Outer Excluding JOIN
outer excluding join,该查询会返回只在A表或者只在B表中的记录(即去除交集部分)
SQL: