这是问题所在。
select count(studentID) AS count from educators where count > 1 group by studentid
无法正常运行,因为SQL Server还不知道count列。
所以我必须这样做
select *
from (select count(StudentID) as count
from educators
group by studentid
) s
where s.count > 1
有更优雅的解决方案吗?似乎应该有一个更好的方法来做到这一点。
答案 0 :(得分:5)
您可以使用HAVING
子句,可能是这样的:
SELECT StudentID, COUNT(StudentID)
FROM educators
GROUP BY StudentID
HAVING COUNT(StudentID) > 1
查询将显示多次出现的所有StudentID。
答案 1 :(得分:3)
SELECT COUNT(studentID) AS count
FROM educators
GROUP by studentid
HAVING COUNT(studentID) > 1
HAVING就像聚合函数的位置。所以它适用于AVG,SUM等。
答案 2 :(得分:1)
SELECT
COUNT(StudentID)
FROM
educators
GROUP BY
studentid
HAVING
COUNT(StudentID) > 1
了解您不应该使用的工具和剪贴板开发人员。
答案 3 :(得分:1)
你得到的就是它的好处。您可以尝试使用count
以外的名称作为别名,但它可能无济于事。列别名名义上仅用于结果集,有时(某些DBMS允许)在ORDER BY子句中使用。
此外,聚合条件属于GROUP BY子句后的HAVING子句:
SELECT COUNT(studentID) AS count
FROM educators
GROUP BY studentid
HAVING COUNT(StudentID) > 1
显然,在嵌套的SELECT情况下,您可以在外部查询的WHERE子句中应用条件,但不能在内部查询的WHERE子句中应用。
答案 4 :(得分:0)
SELECT COUNT(studentID)AS计数 来自教育工作者 GROUP BY studentid HUNT COUNT(StudentID)> 1
永远记住,当你使用聚合函数如min(),max(),count(),avg()时,你需要使用having子句。