Mysql join:把右边的表放在哪里?

时间:2013-05-23 14:54:41

标签: mysql

我在某处读到右表(j.jobStatus =“A”)的条件必须放在where子句之前。

1)和2)之间是否存在差异?

1)

SELECT c.cmpID
FROM company AS c
LEFT JOIN jobs AS j ON c.jobID=j.jobID
WHERE j.jobStatus="A" AND c.cmID > 10

2)

SELECT c.cmpID
FROM company AS c
LEFT JOIN jobs AS j ON c.jobID=j.jobID AND j.jobStatus="A"
WHERE c.cmID > 10

1 个答案:

答案 0 :(得分:1)

区别在于WHERE j.jobStatus = "A"使LEFT JOIN无效,基本上使其成为INNER JOIN。 j将为NULL的任何行都将被该条件过滤掉。

如果条件在ON子句上,它仍然允许为jobs表返回NULL行(即,company表中没有jobs表中匹配行的行)。