我正在开发一个类(class)创建应用程序,用户需要在其中显示 X 门类(class)中的所有学生。例如,如果选择了生物类(class),用户应该能够根据用户已经参加的其他类(class)数量来过滤用户。我的表具有以下字段:id、uid、courseid。我想做类似的事情,但不知道语法应该是什么:
SELECT * FROM course_list WHERE count(uid) > X AND courseid=Z
其中 X 是用户已过滤到的类(class)数量(值 0-3),Z 只是用户当前正在查看的类(class)的 ID。
最佳答案
您不能在查询的 where
子句中使用聚合函数。相反,它们属于查询的 having
部分,因此您需要类似以下内容:
select StudentId
from course_list
where CourseId = @CourseId
group by StudentId
having count(uid) > @MaxCount
...或类似的东西。
关于SQL 计算某个值的出现次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4864655/