mysql - 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 时,我只得到第一个项目和所有项目员工的数量。
解决方案
当您将普通列 ( 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
推荐阅读
- rust - 获取字符串中所有出现的子字符串的索引
- reactjs - 在 react-select 中以编程方式聚焦和选择值
- sql - 子查询在将其与不同表中的下一行进行比较时应返回 Null
- c# - Linq.dynamic.core IQueryable to SQL 语句
- swiftui - 如何将状态变量作为参数传递给 ObservableObject 类型的模型类?
- python-3.x - 计算二维图像中分支的厚度
- firebase - 颤振:从firebase获取最后一个文件
- encryption - Ansible 创建加密文件到现有的保险库
- html - 无法在 div 中居中内容
- javascript - 从数组中仅删除一个相同对象