我有列的表:
PlayerId
Points
我想获得 100 名最佳球员(球员得分越多,他就越好)。对此有何疑问?
我正在使用 sql server 2008
我有列的表:
PlayerId
Points
我想获得 100 名最佳球员(球员得分越多,他就越好)。对此有何疑问?
我正在使用 sql server 2008
SELECT TOP 100 PlayerId
FROM TableName
ORDER BY Points DESC
分解它:
TOP 100
- 选择前 100 条记录返回。ORDER BY Points DESC
- 按Points
字段对结果进行排序,并将DESC
它们设置为反向数字(假设Points
是整数数据类型)。您需要从查询中选择前 X,然后按降序排列。
select top 100 * from players order by Points DESC
当两个或更多玩家得分相同时会发生什么?或者更糟糕的是,如果你有 120 个玩家得分最高会发生什么。您应该使用一个返回每个玩家的查询。RANK
如果是这种情况,我建议您使用。
;WITH CTE AS
(
SELECT *, RANK() OVER(ORDER BY Points DESC) RN
FROM Players
)
SELECT *
FROM CTE
WHERE RN <= 100
SELECT TOP 100 PlayerID
FROM <<Table>>
ORDER BY Points DESC
假设您的表名是Players
:
SELECT TOP 100 PlayerId, Points
FROM Players
ORDER BY Points DESC
SELECT TOP 100 PlayerId FROM name_of_your_table ORDER BY Points DESC
SELECT TOP 100 *
FROM tblName ORDER BY Points DESC