SQL如何从子查询中选取列?MariaDB统计最高选课人数写法是否正确
问题解答
你的代码核心逻辑是正确的,仅存在一个MariaDB语法层面的小疏漏,修正后即可得到预期的3的结果:
- 第一步统计每门课程选课人数的语句完全正确
你编写的SELECT COURSE_ID,COUNT(COURSE_ID) AS C FROM STUDENT GROUP BY COURSE_ID语句可以正常执行,按课程ID分组后统计每个课程对应的选课人数,别名C就是每门课的选课人数统计值。 - 第二步取最高选课人数的语句缺少子查询别名
MariaDB强制要求FROM子句后的子查询必须指定别名,你原写法没有给子查询加别名,运行时会抛出语法错误。只需要给子查询随便指定一个别名即可,修正后的语句如下:SELECT MAX(C) FROM ( SELECT COURSE_ID,COUNT(COURSE_ID) AS C FROM STUDENT GROUP BY COURSE_ID ) AS course_count; - 可选简化写法
你也可以不用嵌套子查询,直接分组后降序排序取第一条即可得到最高选课人数,写法更简洁:SELECT COUNT(COURSE_ID) AS max_c FROM STUDENT GROUP BY COURSE_ID ORDER BY max_c DESC LIMIT 1;
内容的提问来源于stack exchange,提问作者enthusiasticcoder
相关产品推荐
相关产品推荐

