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