如果我可以轻松选择LEFT JOIN:
SELECT .....
FROM "A" LEFT JOIN "B"
现在正确的方法是什么:
1- ON A.id=b.id
2- ON B.id=a.id
两种方式都发生了什么。 clausule“ON”中的顺序有任何限制?
如果我有3º查询...
LEFT join C
这个
的正确方法是什么1- ON A.id=C.id
2- ON B.id=a.id
3- ON C.id=a.id
请帮忙!非常重要的
答案 0 :(得分:0)
"等于"操作员,几乎按照定义,并不关心您比较的顺序。如果x = y,那么y = x。
从风格上讲,按照您加入的顺序编写比较可能会更好,这样当有人在阅读您的代码时,可以更轻松地跟踪正在进行的操作。&lt; < / p>
答案 1 :(得分:0)
对于您的第一个问题,ON
子句中的比较顺序对查询没有影响。
对于第二个问题,用于比较 的列的选择会产生影响。所以:
FROM a LEFT JOIN
b
ON a.id = b.id LEFT JOIN
c
ON a.id = c.id
不同于:
FROM a LEFT JOIN
b
ON a.id = b.id LEFT JOIN
c
ON b.id = c.id
不同之处在于a
中不在b
中的ID。第一个版本在c
中查找匹配的记录。这个版本没有。 left join
找不到这些记录的匹配项,因此b.id
为NULL
且没有匹配项。
第二个选项:
ON B.id = a.id
荒谬。它甚至没有提到表c
,因此在大多数情况下等同于cross join
。