MySQL Query 需要带回行,而不是空结果

标签 mysql left-join

好吧,由于我的愚蠢,我投票决定删除我之前的问题......

我有以下代码:

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

现在,此查询的第一部分从 tdemog 表中取回行,例如它将取回 5 行数据,每行都有一个 id 来自 1到 5。然后我需要查询做的是从 tresultsWHERE q60p = 1 中为第一部分中带回的 5 行中的每一行带回数据 -就像一个普通的“LEFT JOIN”。

有道理吗?

H.

最佳答案

尝试将您的 WHERE 子句的一部分移动到您的 JOIN 条件中:

SELECT ...
FROM tdemog_pfp
LEFT JOIN tresults_pfp ON tdemog_pfp.id = tresults_pfp.q61g AND q60p = '1'
WHERE qnum = 'q61g'
GROUP BY name
ORDER BY name

如果您的 WHERE 子句中有第二个表的字段,它将限制整个记录...但是如果您将其放入 JOIN 条件中,即使第二个表中的记录不符合附加条件,仍应返回第一个表中的记录...

我不确定哪个列属于哪个表...但是将第二个表中的任何列移动到您的 JOIN 中。

关于MySQL Query 需要带回行,而不是空结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9196671/

相关文章:

sql - 为什么这个左外连接查询不能正常工作?

php - 第二次调用存储过程导致错误 SQLSTATE[HY000] : General error: 2014 Cannot execute queries in zf2

mysql - InnoDB 清除 mariadb 进程列表中的 worker

php - MYSQL DATE 函数在 LEFT JOIN 中运行异常缓慢

c# - 根据某些字段获取两个列表之间的差异

mysql - 如何使用左连接选择非关系数据

php - 我有一个像 Array ( [122] => 2 [123] => 3 [124] => 6 ) 一样动态的数组,我想通过这些数组值从数据库中获取记录

mysql - 如何更改mysql 中新创建的VIEW 中的属性?

mysql - 请帮我优化包含几百条记录的子查询的mysql查询

mysql - 连接表并进行计数操作 - MySQL