使用 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