MySQL计数加入和组

时间:2012-06-01 21:51:01

标签: mysql join count group-by

我在查询上一直在苦苦挣扎几个小时,但却无法做到正确。两个表,一个用于学生,另一个包含每个学生已注册的所有课程。我需要一个结果集,每个学生有一行,加上学生注册的课程数。这是我迄今为止最接近的尝试:

SELECT 
count(*), student.*
FROM student 
LEFT JOIN schedule
ON student.id = schedule.studentid
GROUP BY schedule.studentid 

我正在使用LEFT JOIN,因为结果必须包括尚未注册任何课程的学生。这些表由学生ID加入,这也是我对它们进行分组的方式。

目前的演绎似乎是有效的(大多数情况下),除非它没有在课程中没有任何课程的学生返回。

我被困在这里,寻找能让我快速摆脱困境的人。感谢您提供的任何牵引力!

3 个答案:

答案 0 :(得分:2)

你真的很亲密:-)

SELECT 
    student.*, count(*)
FROM student 
    LEFT JOIN schedule ON student.id = schedule.studentid
GROUP BY student.* 

应该可以正常工作

答案 1 :(得分:0)

根据我的理解,子查询如何:

SELECT 
     *, (select count(sch.id) from schedule as sch where sch.studentid = stu.id) as ClassNum
FROM student as stu

答案 2 :(得分:0)

SELECT *, (SELECT COUNT(*) `count` FROM schedule s where s.studentid=student.id) `count` FROM student