中间SQL Join中的“左”和“右”表是什么?

时间:2015-01-16 15:44:12

标签: sql-server join

SELECT * FROM Table a
INNER JOIN Table b on a.ID = b.ID
LEFT JOIN Table c on a.ID = c.ID
LEFT JOIN Table d on c.Something = d.Something -- which is left vs right
LEFT JOIN Table e on b.Something = e.Something -- which is left vs right

这可能是一个愚蠢的问题,但我可以消除这种大脑阻塞,哪个表是"左"一个和哪个表是"右"在我的最后两个加入中有一个?这取决于列表中的第一个与" on" ?我可以编写查询并确保正确的结果,但只是在技术层面上理解它...在处理上述示例的中间表时。

2 个答案:

答案 0 :(得分:1)

LEFT JOIN Table d on c.Something = d.Something

c左,d右。

LEFT JOIN Table e on b.Something = e.Something

左边是e,右边是。

您加入查询的表格(在本例中为d和e)是正确的,因此您加入的上一个查询中的任何键都来自左表(c和b)。

答案 1 :(得分:1)

想象一下,每次添加表格时都要构建一个水平层次结构。

在这种情况下,您从FROM Table A开始,以便成为层次结构的顶层(位于最左侧)。

当你INNER JOIN Table b时,它变为第二级并且位于表A的右边。在这个连接表中,A左边,表B右边。

LEFT JOIN的情况也是如此。

enter image description here

值得注意的是,连接的ON子句中的列顺序无关紧要。

LEFT JOIN Table d on d.Something = c.Something
LEFT JOIN Table e on e.Something = b.Something

表示与:

相同
LEFT JOIN Table d on c.Something = d.Something
LEFT JOIN Table e on b.Something = e.Something

因为添加表的顺序会影响它们所在的连接的哪一侧而不是ON子句的顺序。