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