MySQL:最大计数和列名
我有MySQL:最大计数和列名,mysql,Mysql,我有学生,课程和学生有课程表格 学生(id,name…) 课程中(id,name…) 学生拥有课程(学生id,课程id) 我想知道“人口最多的课程”的数量和名称 有了这个,我可以得到最大填充课程数,但我不知道如何才能得到课程名称 SELECT MAX(counted) FROM ( SELECT COUNT(*) AS counted FROM student_has_course GROUP BY course_ID ) AS counts; 请尝试此查询 SELEC
学生
,课程
和学生有课程
表格
学生(id
,name
…)课程中(
id
,name
…)学生拥有课程(
学生id
,课程id
)我想知道“人口最多的课程”的数量和名称 有了这个,我可以得到最大填充课程数,但我不知道如何才能得到课程名称
SELECT MAX(counted)
FROM
(
SELECT COUNT(*) AS counted
FROM student_has_course
GROUP BY course_ID
) AS counts;
请尝试此查询
SELECT COUNT(shc.course_id) as cnt, c.name
FROM student_has_course shc
JOIN course c ON (c.course_id = shc.course_id)
GROUP BY shc.course_id
ORDER BY cnt DESC
LIMIT 1
尝试内部连接以获得result@RohitKumar你能给我正确的语法吗?为了确保正确的顺序,我会添加另一个订单。很可能不会使用它,但它是为了确保输出的正确排序,因为优化器最后是如何进行连接的还不是100%清楚。@frlan,因为子查询只返回一行,我想这不会是一个问题
SELECT c.name, sc.cnt
FROM
course c
INNER JOIN (SELECT course_id, COUNT(*) as cnt FROM student_has_course GROUP BY 1 ORDER BY 2 DESC LIMIT 1) cs ON c.id=cs.course_id