每个学生选一门课,
要求结果是课程的名字,按被选次数降序排列。
学生表 student sid,cid
课程表 course  cname,cid谢谢.

解决方案 »

  1.   

    SELECT 
        b.cname,
        COUNT(*) AS [cnt]
    FROM student AS a
      JOIN course AS b
      ON a.cid=b.cid
    GROUP BY b.cname
    ORDER BY COUNT(*) DESC;
      

  2.   


    SELECT 
        b.cname,COUNT(a.cid) 次数 FROM 学生表 a,课程表 b ON a.cid=b.cid
    GROUP BY b.cname
    ORDER BY COUNT(a.cid) DESC;
      

  3.   

    先聚合再连表,获取较高性能。
    select a.* from course a
    inner join
    (select count(*) cnt,cid from student group by cid) b
    on a.cid=b.cid
    order by cnt desc
      

  4.   


    select a.cname from course a
    left join student b on b.cid=a.cid
    group by a.cname
    order by count(*) desc
      

  5.   


    select a.cname , count(*) cnt from 课程表 a, 学生表 b where a.cid = b.cid group by a.cname order by cnt desc
      

  6.   

    学生表 student sid,cid 
    课程表 course  cname,cid select cname from (
    select cid,count(*) selNum from student 
    group by cid
    ) a join course b on a.cid=b.cid
    order by a.selNum desc
      

  7.   

    select cname from course order by (select count(*) from student where cid=course.cid) desc
      

  8.   


    select b.cname,count(b.cname)as num
    from student a,course b
    where a.cid=b.cid
    group by cname
    order by num
      

  9.   


    没看到是降序~~
    select b.cname,count(b.cname)as num
    from student a,course b
    where a.cid=b.cid
    group by cname
    order by num desc
      

  10.   


    SELECT 
        b.cname,
        COUNT(*) AS [cnt]
    FROM student AS a
      JOIN course AS b
      ON a.cid=b.cid
    GROUP BY b.cname
    ORDER BY COUNT(*) DESC;
      

  11.   

    select cname
    from course c
    join student s
    on c.cid=s.cid
    group by c.cname
    order by count(1) desc
      

  12.   

    select a.cname , count(*) cnt from student a join course b 
    on a.cid = b.cid group by a.cname order by cnt desc