1. 程式人生 > >查詢總成績排名前三的學生成績資訊

查詢總成績排名前三的學生成績資訊

面試的時候碰到一個筆試題,一張學生成績表A(表可以自行腦補,就這個意思),如圖(學生,課程,分數):

要查出總分排名前三的學生成績資訊。

首先是要查出總分前三的學生:

SELECT name from a GROUP BY name ORDER BY sum(fenshu) DESC LIMIT 0,3 ;

這樣,發現並沒有什麼問題。


於是想想,加個in 不就行了,

SELECT * from a WHERE name in (SELECT name from a GROUP BY name ORDER BY sum(fenshu) DESC LIMIT 0,3 );

點選執行,

[SQL] SELECT * from a WHERE name in (SELECT name from a GROUP BY name ORDER BY sum(fenshu) DESC LIMIT 0,3 )


[Err] 1235 - This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'

這不能連著用怎麼辦。。。。

一翻嘗試,發現,把limit 包起來,居然可以連用了:

SELECT * FROM `a` where name in ( SELECT name from (SELECT name from a GROUP BY name ORDER BY sum(fenshu) desc LIMIT 0,3) as c  );

這是什麼道理,有小夥伴可以解釋下麼?