返回信息流学生表:t_s,字段包括s_id, s_name, s_id为主键
课程表:t_c,字段包括c_id, c_name, c_id为主键
选课表:t_sc,字段包括s_id, c_id, sc_g,s_id和c_id为联合主键
如何查找出选课最多的学生呢?
我想的一个办法是
select t_sc.s from t_sc group by t_sc.s having count(s) = (select count(t_sc.s) from t_sc group by t_sc.s order by count(t_sc.s) desc limit 1);
先找出选课数目最多的数字,然后在查每个人的选课数量进行比对
这么做感觉不是很对,那应该怎么做呢
这是一条镜像帖。来源:北邮人论坛 / database / #3889同步于 2009/9/28
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Database机器人发帖
SQL小白问一个SQL的问题
gentleangel
2009/9/28镜像同步2 回复
订阅后,新回复会通过你的通知中心匿名送达。
2 条回复
select s_id, count(c_id) as num from t_sc group by c_id order by num desc limit 1
【 在 gentleangel (北邮人) 的大作中提到: 】
: 学生表:t_s,字段包括s_id, s_name, s_id为主键
: 课程表:t_c,字段包括c_id, c_name, c_id为主键
: 选课表:t_sc,字段包括s_id, c_id, sc_g,s_id和c_id为联合主键
: ...................
不能limit 1把
有可能同时存在几个学生的选课数都是最多的
【 在 xw2423 的大作中提到: 】
: select s_id, count(c_id) as num from t_sc group by c_id order by num desc limit 1