加入两个表后的SQL计数

时间:2015-02-06 15:17:04

标签: sql count

我是SQL的新手,我想提出一个计数,假设这个例子有2个表:

School(schoolID, name,....)
Student(StudentID, SchoolID, ...)

我试过了:

SELECT COUNT(studentID) 
FROM School s, Student t
WHERE s.schooldID = t.schoolID

如何计算所有学校的所有学生?

2 个答案:

答案 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