我见过使用 aLEFT JOIN
而不是INNER
or的查询LEFT OUTER
。
究竟是LEFT JOIN
什么?
如果 ainner join
仅返回在两个表中匹配left join
的条目,则 a 从第一个表中获取所有条目以及在第二个表中匹配的任何条目。Aright join
是 a 的倒数left join
(即:全部来自第二个表)
所以如果 TableA 是
A B
1 a
2 b
3 c
和表 B 是
A B
1 d
2 e
然后Select * from TableA inner join TableB on TableA.A = TableB.A
返回
1 a 1 d
2 b 2 e
并Select * from TableA left join TableB on TableA.A = TableB.A
返回
1 a 1 d
2 b 2 e
3 c null null
它与 LEFT OUTER 相同(隐含 OUTER 是因为 INNER JOIN 需要双边匹配,因此 aLEFT INNER JOIN
没有意义)。这同样适用于RIGHT JOIN
,它们分别FULL JOIN
等同于RIGHT OUTER JOIN
和FULL OUTER JOIN