MySQL是一款常用的關系型數據庫,其強大的查詢功能常常為開發者們帶來極大的便利。本文將介紹如何使用MySQL查詢每組前三名的記錄。
SELECT `group`, `name`, `score` FROM `students` s1 WHERE ( SELECT COUNT(DISTINCT s2.score) FROM `students` s2 WHERE s2.score >s1.score AND s2.group = s1.group )< 3 ORDER BY `group`, `score` DESC;
以上代碼中,我們首先從`students`表中選擇出所需要的列,分別為`group`、`name`和`score`。然后使用子查詢的方式,對于每一組學生按成績進行降序排序,確定每個學生在其組內的排名。注意使用`DISTINCT`關鍵字去除重復的`score`記錄,以免出現并列情況。
在子查詢中,我們通過`s2.score >s1.score`篩選出比當前學生成績更高的學生,并使用`s2.group = s1.group`來限定在當前組內。再使用`COUNT`函數計算符合條件的記錄數量,即為當前學生在其組內的排名。
接著,我們將每個學生在其組內的排名與3進行比較,當其小于3時,即可確定其為該組的前三名。最后使用`ORDER BY`對結果進行排序,首先按組別升序排列,其次按成績降序排列。
通過以上的操作,我們可以輕松地使用MySQL查詢每組前三名的記錄。