我是SQL的新手,我想提出一个计数,假设这个例子有2个表:
School(schoolID, name,....)
Student(StudentID, SchoolID, ...)
我试过了:
SELECT COUNT(studentID)
FROM School s, Student t
WHERE s.schooldID = t.schoolID
如何计算所有学校的所有学生?
答案 0 :(得分:3)
由于您在学生表中有学校ID,因此我觉得您根本不需要加入学校。只需从学生表中选择一个计数,然后按学校ID分组:
SELECT schoolID, COUNT(*) AS numStudents
FROM student
GROUP BY schoolID;
您需要加入学校的唯一原因是您需要其他信息,例如学校名称等。如果你只想要学校的学号和学生人数,以上就可以了。
完成最后的想法,可能与你的问题无关。如果您确实想要学校名称,那么您只需要进行内部联接并将school.name
放入您的选择语句中,同时将学生表中的计数和学校ID分组:
SELECT s.name, st.COUNT(*) AS numStudents
FROM student st
JOIN school s ON s.id = st.schoolID
GROUP BY s.id;
答案 1 :(得分:2)
如果您想获得每个学校的计数,则需要group by
。此外,通常我们更喜欢ANSI样式连接,因为实际上所有数据库系统现在都支持它们,并且它们更易于阅读和维护:
select count(t.studentID)
from Student t
join School s /* added join for your convenience, not necessary here */
on s.schooldID = t.schooldID
group
by t.schoolID