2014-06-11 159 views
1

从我所了解到的关于左外连接的所有内容中,您希望为空的表应位于等号的右侧。如果是这样的话,为什么这两个查询返回相同的结果:左外连接表排序

SELECT   * 
FROM   employees e 
LEFT JOIN  cars c ON c.employeeID=e.id AND c.name='Honda City' 
WHERE c.id IS NULL 
ORDER BY  e.id ASC; 

SELECT   * 
FROM   employees e 
LEFT JOIN  cars c ON e.id=c.employeeID AND c.name='Honda City' 
WHERE c.id IS NULL 
ORDER BY  e.id ASC; 

演示:http://sqlfiddle.com/#!15/46d00/2

+1

这两个查询是相同的。左侧和右侧来自哪个_table_首先。检查此[小提琴](http://sqlfiddle.com/#!15/46d00/4) – paqogomez

回答

5

Q1使用一个LEFT JOIN B开A.id = B.id

Q2使用左侧连接B打开B.id = A.id

您已更改ON子句中正在比较的项目的LHS和RHS,但是LEFT连接正在讨论哪个TABLE位于左侧。

所以看到一个区别,你会让Q2使用“B左加入A.id = B.id”

+0

谢谢!我真的很想知道,自从我学习了SQL(松了一口气)以后,我是否做得不正确。咄! – user3730698