更改 ON 条件顺序会导致不同的查询结果?
Changing the ON condition order results in different query results?
如果我在最后一行中将顺序从这个更改为下一个,特别是当我使用左连接或左外部连接时,会有什么不同吗?有些人让我感到困惑,当我们改变顺序时它可能有不同的价值,我估计他们自己也不确定这一点。
或者,如果我们改变顺序,在右外连接、右连接、左连接、左外连接等什么情况下查询结果不同?
使用 =
时,将标准放在哪一边没有区别。
在 LEFT JOIN
和 RIGHT JOIN
的情况下,Table 顺序很重要,但条件顺序不重要。
例如:
SELECT *
FROM Table1 a
LEFT JOIN Table2 b
ON a.ID = b.ID
相当于:
SELECT *
FROM Table2 a
RIGHT JOIN Table1 b
ON a.ID = b.ID
但不等同于:
SELECT *
FROM Table2 a
LEFT JOIN Table1 b
ON a.ID = b.ID
演示:SQL Fiddle
如果我在最后一行中将顺序从这个更改为下一个,特别是当我使用左连接或左外部连接时,会有什么不同吗?有些人让我感到困惑,当我们改变顺序时它可能有不同的价值,我估计他们自己也不确定这一点。
或者,如果我们改变顺序,在右外连接、右连接、左连接、左外连接等什么情况下查询结果不同?
使用 =
时,将标准放在哪一边没有区别。
LEFT JOIN
和 RIGHT JOIN
的情况下,Table 顺序很重要,但条件顺序不重要。
例如:
SELECT *
FROM Table1 a
LEFT JOIN Table2 b
ON a.ID = b.ID
相当于:
SELECT *
FROM Table2 a
RIGHT JOIN Table1 b
ON a.ID = b.ID
但不等同于:
SELECT *
FROM Table2 a
LEFT JOIN Table1 b
ON a.ID = b.ID
演示:SQL Fiddle