MySQL LEFT Join 问题 - 我做错了什么?

标签 mysql left-join

我应该注意,id 在 tdemog_pfp 表中不是唯一的 - 那里有一个自动递增的唯一字段 - 这可能是一个问题吗?

好的,我有以下 SQL 查询:

SELECT id, name, total_staff AS StaffCount, COUNT( q60a ) AS TotalResp, (COUNT( q60a ) / total_staff * 100) AS Perc 
FROM tdemog_pfp
LEFT JOIN tresults_pfp ON tdemog_pfp.id = tresults_pfp.q60a
GROUP BY name
ORDER BY name

现在,demog 表有多行,其中列的条目可以有 q59、q60a、q60b 等 qnum

我想返回结果WHERE qnum = q60a但是我有一个问题,当我将它添加到上面以进行以下操作时 - 它返回零结果(空结果集) ,这是不正确的:

SELECT id, name, total_staff AS StaffCount, COUNT( q60a ) AS TotalResp, (COUNT( q60a ) / total_staff * 100) AS Perc 
FROM tdemog_pfp
LEFT JOIN tresults_pfp ON tdemog_pfp.id = tresults_pfp.q60a
    WHERE qnum = q60a
GROUP BY name
ORDER BY name

我哪里出错了?

谢谢

H.

最佳答案

使测试成为 JOIN 条件的一部分,而不是在 WHERE 子句中进行测试。

SELECT id, name, total_staff AS StaffCount, COUNT( q60a ) AS TotalResp, (COUNT( q60a ) / total_staff * 100) AS Perc 
FROM tdemog_pfp
LEFT JOIN tresults_pfp ON tdemog_pfp.id = tresults_pfp.q60a
    AND qnum = q60a
GROUP BY name
ORDER BY name

关于MySQL LEFT Join 问题 - 我做错了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9162854/

相关文章:

python - 在 ubuntu 14.04 上安装 mysql workbench 时出错

mysql - 事件记录(mysql db)文本字段中的字符数是否有限制

mysql:查询返回根据特定用户的分数排名

mysql - 如何在更少的查询中有效地为多个列多次连接同一个表?

php - 根据用户是否关注帖子来查询帖子的最有效方法

mysql - 子查询选择行作为列(透视)

python - Web2Py DAL、左连接和运算符优先级

mysql - 从表 A 中选择全部,从表 B 中选择一列 - LEFT JOIN

sqlite - 带左联接的SQLITE排序group_concat

asp.net - 如何编写一个 LINQ 查询来将子表过滤到特定时间段并对子表的结果求和?