SQL 将ORDER BY与TOP结合使用可基于列的值返回前x行

示例

在这个例子中,我们可以使用GROUP BY不仅确定的排序返回的行的,还能有什么行返回,因为我们使用TOP限制结果集。

假设我们要从一个未命名的热门问答网站中返回信誉度最高的前5位用户。

没有ORDER BY

该查询返回默认情况下排在前5位的行,在本例中为“ Id”,即表中的第一列(即使结果中未显示该列)。

SELECT TOP 5 DisplayName, Reputation
FROM Users

返回...

显示名称声誉
社区1
杰夫·达尔加斯(Geoff Dalgas)12567
贾罗德·迪克森(Jarrod Dixon)11739
杰夫·阿特伍德37628
乔尔·斯波斯基25784

与ORDER BY

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

返回...

显示名称声誉
乔恩·斯基特865023
达林·迪米特罗夫(Darin Dimitrov)661741
BalusC650237
汉斯·帕桑特625870
马克·格雷韦尔601636

备注

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

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