MySQL Left Join NULL问题

Hom*_*r_J 0 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
Run Code Online (Sandbox Code Playgroud)

以上工作正常,它返回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
Run Code Online (Sandbox Code Playgroud)

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

不过,我希望发生是与返回35行查询name,并NULL在每个名字旁边.很明显,我认为我JOIN的错误,但我无法解决我出错的地方.

欢迎任何和所有建议.

jue*_*n d 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
Run Code Online (Sandbox Code Playgroud)