使用 ORDER BY 和 TOP 可以根據列值返回前 x 行

在這個例子中,我們可以使用 GROUP BY 不僅確定的排序行的返回,還需要什麼行返回,因為我們使用 TOP 限制結果集。

假設我們希望從一個未命名的熱門問答網站返回前 5 名最高聲譽使用者。

沒有 ORDER BY

此查詢返回預設排序的前 5 行,在本例中為 Id,即表中的第一列(即使它不是結果中顯示的列)。

SELECT TOP 5 DisplayName, Reputation
FROM Users

返回…

顯示名稱 聲譽
社群 1
傑夫達爾加斯 12567
Jarrod Dixon 11739
傑夫阿特伍德 37628
喬爾斯波爾斯基 25784

使用 ORDER BY

SELECT TOP 5 DisplayName, Reputation
FROM Users
ORDER BY Reputation desc

返回…

顯示名稱 聲譽
JonSkeet 865023
達林迪米特羅夫 661741
BalusC 650237
漢斯帕斯特 625870
馬克格拉維爾 601636

備註

某些版本的 SQL(例如 MySQL)在 SELECT 的末尾使用 LIMIT 子句,而不是在開頭使用 TOP,例如:

SELECT DisplayName, Reputation
FROM Users
ORDER BY Reputation DESC
LIMIT 5