我正在尝试做一个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
答案 0 :(得分:3)
首先,从不在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
答案 1 :(得分:0)
将m.mnr, m.name
添加到GROUP BY
子句并排除i.cursist
SELECT m.mnr, m.name, count(i.cursist)
FROM employee m inner join
registrations i
on i.cursist = m.mnr
GROUP BY m.mnr, m.name
HAVING count(i.cursist) > 1;
我使用显式JOIN
语法而不是旧式逗号