SQL 中的ORDER BY

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但這裏確實可以了

等待大神回覆 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章