首页 > 解决方案 > MySQL SUM 和 WHERE 只给出一个结果

问题描述

当我同时使用 WHERE 和 COUNT 时出现问题。我有 3 个表:T1 和 T2 以及 T3 中的 t1.id 和 t2.id。

我需要从 T1 打印具有特定 CITY 名称的所有结果,并计算有多少员工在从事该项目。所以我试过

SELECT t1.name, COUNT(t3.idP)
from t3
INNER JOIN t1 ON t1.idP = t3.idP
INNER JOIN t2 ON t2.idE = t3.idE
WHERE t2.city = 'SOME CITY NAME'

结果只是第一个项目名称和所有员工的人数。如果我删除 COUNT 我可以看到该城市的所有项目,或者如果我删除 WHERE 我可以看到每个项目中的员工人数。但是当同时拥有 COUNT 和 WHERE 时,我只得到第一个项目和所有项目员工的数量。

标签: mysqlphpmyadmin

解决方案


当您将普通列 ( t1.name) 与聚合函数 ( COUNT(t3.idP)) 混合时,您需要使用GROUP BY.

SELECT t1.name, COUNT(t3.idP)
from t3
INNER JOIN t1 ON t1.idP = t3.idP
INNER JOIN t2 ON t2.idE = t3.idE
WHERE t2.city = 'SOME CITY NAME'
GROUP BY t1.name

推荐阅读