You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

MySQL统计查询异常排查:多表关联仅返回单条结果

问题原因与解决方案

哈哈,这个问题我熟!你的SQL语句现在只返回一条结果,核心原因是没加GROUP BY子句哦~

问题根源

当你使用COUNT()这类聚合函数时,如果不指定分组条件,MySQL会把所有符合WHERE条件(这里是WHERE 1,也就是所有行)的记录当成一个整体来统计,自然就只会返回一条汇总结果。而你想要的是每个学生单独的报名次数,必须告诉数据库要按学生的唯一标识来分组统计。

修正后的SQL语句

SELECT 
    student.id, 
    student.session_token AS available_token, 
    COUNT(inscription_student.id_inscription) AS nb_inscription_in_progress 
FROM student 
LEFT JOIN inscription_student ON student.id = inscription_student.id_student_join 
GROUP BY student.id, student.session_token;

为什么这么改?

  • GROUP BY student.id, student.session_token来指定分组规则:因为student.id是学生的唯一标识,每个学生对应唯一的id,而session_token是学生的属性字段,和id一起分组能保证每个学生的信息被单独统计。
  • 保留LEFT JOIN的好处是:哪怕某个学生没有报名任何课程,也会被查询出来,对应的nb_inscription_in_progress会显示为0,不会漏掉未报名的学生。

内容的提问来源于stack exchange,提问作者logobi

火山引擎 最新活动