在多个查询中纠正句子的正确方法

时间:2015-11-15 22:06:54

标签: mysql sql

如果我可以轻松选择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

请帮忙!非常重要的

2 个答案:

答案 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.idNULL且没有匹配项。

第二个选项:

ON B.id = a.id 

荒谬。它甚至没有提到表c,因此在大多数情况下等同于cross join