MySQL Left Join NULL问题

时间:2014-07-04 11:09:45

标签: php mysql sql

我有以下MySQL代码:

工作查询

SELECT name, AVG(q1) AS avg 
FROM respondents 
LEFT JOIN results_new ON respondents.login_id = results_new.company 
WHERE respondents.brand = 'ABC' 
AND results_new.sdate = 'MAY2014' 
GROUP BY name 
ORDER BY avg 
DESC

以上工作正常,它会返回35行并正确显示名称和平均值。

非工作查询

SELECT name, AVG(q1) AS avg 
FROM respondents 
LEFT JOIN results_new ON respondents.login_id = results_new.company 
WHERE respondents.brand = 'ABC' 
AND results_new.sdate = 'NOV2014' 
GROUP BY name 
ORDER BY avg 
DESC

以上返回zero结果 - 这是正确的,因为表中没有数据为'NOV2014&#39}。

但是,我预计会发生的是查询返回35行,每个名称旁边都有nameNULL。很明显,我认为我的JOIN不正确,但我无法解决我出错的地方。

欢迎任何和所有建议。

1 个答案:

答案 0 :(得分:5)

您的where子句会将您的left join变为inner join,因为您会对联接表中的数据进行过滤。将此条件放在您的联接的on子句中。

SELECT name, AVG(q1) AS avg 
FROM respondents 
LEFT JOIN results_new ON respondents.login_id = results_new.company  
                      AND results_new.sdate = 'NOV2014'
WHERE respondents.brand = 'ABC'
GROUP BY hotel_name 
ORDER BY avg DESC
相关问题