sql - 不是试图计算课程参与者的 GROUP BY 表达式
问题描述
我正在尝试执行一条 SQL 语句,该语句向我显示哪些员工不止一次地遵循了某个课程。这是我的以下 SQL:
SELECT m.mnr, m.name, count(i.cursist)
FROM employee m, registrations i
WHERE i.cursist = m.mnr
GROUP BY i.cursist;
MNR 是员工的主键,而 CURSIST 是注册表中的外键。
它返回错误:
不是按表达式分组 行错误:1 列:8
解决方案
首先,永远不要在FROM
子句中使用逗号。 始终使用正确、明确、标准 JOIN
的语法。
其次,未聚合的列进入GROUP BY
. 所以:
SELECT m.mnr, m.name, count(i.cursist)
FROM employee m JOIN
registrations i
ON i.cursist = m.mnr
GROUP BY m.mnr, m.name;
不止一次,你想要:
HAVING COUNT(i.cursist) > 1
推荐阅读
- python - Pysmb SMBConnection listPath 函数 - 我可以在模式参数中使用正则表达式吗?
- python - AWS Lambda python函数的长时间冷启动
- python - mitmproxy:撤消编辑的快捷方式
- google-apps-script - 如何在驱动器中创建带有一些文本和表单提交标签的新电子表格
- aws-lambda - ALB 触发器 lamda 函数缺少权限 CDK
- javascript - jquery .one() 计算会检查每个事件吗?
- excel - 用特定数字替换文本框输入
- python - 如何绘制一维误差条形图?- Python
- visual-studio - Libjna 构建 - 链接:致命错误 LNK1104:无法打开文件 'LIBCMT.lib'
- c++ - 堆栈 std::vectors 以生成矩阵,类似于 numpy.vstack