在MySQL查詢中,有時需要獲取每個分組的前幾條記錄,比如獲取每個班級的前三名學生的成績信息。下面介紹一種實現方式。
SELECT t1.class_id, t1.student_name, t1.score FROM scores t1 WHERE (SELECT COUNT(DISTINCT (t2.score)) FROM scores t2 WHERE t2.score >t1.score AND t2.class_id = t1.class_id)< 3;
其中t1是原始表,t2是作為比較表,首先SELECT查詢中的子查詢會查找t2表中比t1表中成績高的記錄,然后用COUNT()函數返回這些記錄的數量,最后進行比較,如果小于3,則表示該記錄為前三名。
如果需要查詢每個班級的前N名,只需將3替換為N即可。
下一篇mysql查詢每月數據