17

我见过使用 aLEFT JOIN而不是INNERor的查询LEFT OUTER

究竟是LEFT JOIN什么?

4

2 回答 2

36

如果 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  
于 2012-07-31T11:45:59.200 回答
9

它与 LEFT OUTER 相同(隐含 OUTER 是因为 INNER JOIN 需要双边匹配,因此 aLEFT INNER JOIN没有意义)。这同样适用于RIGHT JOIN,它们分别FULL JOIN等同于RIGHT OUTER JOINFULL OUTER JOIN

于 2012-07-31T11:48:47.580 回答