我希望在 MySQL 中进行查询,以列出所有院系及其学生人数,给定以下表结构:
我的查询如下:
SELECT `f`.`id`, `f`.`name`, COUNT(*) `total`
FROM `student` `s`
INNER JOIN `course` `c` ON `c`.`id` = `s`.`course_id`
LEFT JOIN `faculty` `f` ON `f`.`id` = `c`.`faculty_id`
GROUP BY `c`.`faculty_id`
ORDER BY `f`.`name`
我得到了这个结果:
但我需要获得所有院系,甚至是那些没有注册学生的院系。
如果我对 course
表使用 LEFT JOIN,我会得到相同的结果。
最佳答案
如果你想要所有的院系; JOIN 的起始表应该是 faculty 表。然后相应地对另一个表进行左连接。
使用以下查询:
SELECT `f`.`id`, `f`.`name`, COUNT(`s`.`id`) AS `total`
FROM `faculty` AS `f`
LEFT JOIN `course` AS `c` ON `f`.`id` = `c`.`faculty_id`
LEFT JOIN `student` AS `s` ON `c`.`id` = `s`.`course_id`
GROUP BY `f`.`id`, `f`.`name`
ORDER BY `f`.`name`
关于mysql - 在 MySQL 中使用 GROUP BY 在 COUNT 中包含零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52485232/