使用Join和Group的MySQL计数

使用Join和Group的MySQL计数,mysql,join,count,group-by,Mysql,Join,Count,Group By,我在一个问题上苦苦挣扎了几个小时,但就是做不好。两个表,一个用于学生,另一个包含每个学生注册的所有课程。我需要一个结果集,每个学生有一行,加上学生注册的班级数。以下是我迄今为止最接近的尝试: SELECT count(*), student.* FROM student LEFT JOIN schedule ON student.id = schedule.studentid GROUP BY schedule.studentid 我使用LEFT JOIN,因为结果必须包括尚未注册任何课

我在一个问题上苦苦挣扎了几个小时,但就是做不好。两个表,一个用于学生,另一个包含每个学生注册的所有课程。我需要一个结果集,每个学生有一行,加上学生注册的班级数。以下是我迄今为止最接近的尝试:

SELECT 
count(*), student.*
FROM student 
LEFT JOIN schedule
ON student.id = schedule.studentid
GROUP BY schedule.studentid 
我使用LEFT JOIN,因为结果必须包括尚未注册任何课程的学生。这些表由学生id连接,这也是我对它们进行分组的方式

目前的格式副本似乎正在发挥作用(大部分),但它不会在没有任何课程安排的情况下返回学生


我被困在这里,正在寻找任何能让我快速走出泥潭的人。感谢您提供的牵引力

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

SELECT 
     *, (select count(sch.id) from schedule as sch where sch.studentid = stu.id) as ClassNum
FROM student as stu
你真的很接近:-)


应该可以正常工作

我收到group by student.*的语法错误,但group by student.id的查询似乎与预期的一样工作。感谢您快速而出色的示例!是的,好吧,那就不用学生了。*只需逐个显示和分组列
SELECT *, (SELECT COUNT(*) `count` FROM schedule s where s.studentid=student.id) `count` FROM student
SELECT 
    student.*, count(*)
FROM student 
    LEFT JOIN schedule ON student.id = schedule.studentid
GROUP BY student.*