
为什么我这样写是错的、正确的写法应该是怎样的
SELECT class AS 班级, COUNT(DISTINCT s.no) AS 人数
FROM Student s
WHERE s.no IN (SELECT no FROM Score GROUP BY no HAVING COUNT(DISTINCT cno) > 0)
GROUP BY class
ORDER BY 人数 DESC;

SELECT class AS 班级, COUNT(DISTINCT s.no) AS 人数
FROM Student s
WHERE s.no IN (SELECT no FROM Score GROUP BY no HAVING COUNT(DISTINCT cno) > 0)
GROUP BY class
ORDER BY 人数 DESC;
SELECT class AS 班级, ifnull(count(b.no),0) AS 人数
FROM Student s left join(select no from score group by no) as b
on s.no=b.no
GROUP BY class
ORDER BY 人数 DESC;