MySQL中 IN 不能和LIMIT一起用
還是上jie那個學生表,我現在想查詢cid爲02 的前三名學生的總成績
SELECT SUM(s_score)
FROM score
WHERE s_score IN (SELECT s_score
FROM score
WHERE c_id = '02'
ORDER BY s_score DESC
LIMIT 3);
this version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'
解決方案1:再嵌套一次
SELECT SUM(s_score)
FROM score
WHERE s_score IN (SELECT s_score FROM(
SELECT s_score
FROM score
WHERE c_id = '02'
ORDER BY s_score DESC
LIMIT 3) AS t1);
解決方案2:把它放在from裏面不涉及in
SELECT SUM(t1.s_score)
FROM (
SELECT s_score
FROM score
WHERE c_id = '02'
ORDER BY s_score DESC
LIMIT 3) t1;
當然我也可以不用limit
-- cid的爲02的前三名
SELECT SUM(t1.s_score)
FROM (
SELECT s1.s_id,s1.s_score
FROM Score s1
WHERE s1.c_id = '02'
AND (SELECT COUNT(*) FROM Score s2
WHERE s1.c_id = s2.c_id
AND s2.s_score > s1.s_score) < 3) AS t1;
我也不知道爲什麼以前說表表達式不能用order by但這裏確實可以了
等待大神回覆