【问题标题】:MySQL Count with Join and GroupMySQL 计数与加入和组
【发布时间】:2012-06-07 03:19:38
【问题描述】:

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

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

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

目前的演绎似乎(大部分)都在工作,只是它不会让没有任何课程的学生返校。

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

【问题讨论】:

    标签: mysql join count group-by


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:
      SELECT *, (SELECT COUNT(*) `count` FROM schedule s where s.studentid=student.id) `count` FROM student
      

      【讨论】:

        【解决方案3】:

        你真的很亲密:-)

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

        应该没问题

        【讨论】:

        • 我收到 group by student.* 的语法错误,但查询似乎与 group by student.id 一样正常工作。感谢您提供快速而出色的示例!
        • 是的,然后代替学生。* 只显示和分组列,每列一个
        猜你喜欢
        • 2021-11-19
        • 1970-01-01
        • 2012-06-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-31
        相关资源
        最近更新 更多