1

我有列的表:

PlayerId
Points

我想获得 100 名最佳球员(球员得分越多,他就越好)。对此有何疑问?

我正在使用 sql server 2008

4

7 回答 7

5
SELECT TOP 100 PlayerId
FROM TableName
ORDER BY Points DESC

分解它:

  • TOP 100- 选择前 100 条记录返回。
  • ORDER BY Points DESC- 按Points字段对结果进行排序,并将DESC它们设置为反向数字(假设Points是整数数据类型)。
于 2012-07-11T13:51:15.720 回答
3

您需要从查询中选择前 X,然后按降序排列。

select top 100 * from players order by Points DESC
于 2012-07-11T13:51:17.780 回答
2

当两个或更多玩家得分相同时会发生什么?或者更糟糕的是,如果你有 120 个玩家得分最高会发生什么。您应该使用一个返回每个玩家的查询。RANK如果是这种情况,我建议您使用。

;WITH CTE AS
(
    SELECT *, RANK() OVER(ORDER BY Points DESC) RN
    FROM Players
)
SELECT *
FROM CTE
WHERE RN <= 100
于 2012-07-11T13:57:24.590 回答
0
SELECT TOP 100 PlayerID 
FROM <<Table>> 
ORDER BY Points DESC
于 2012-07-11T13:51:28.393 回答
0

假设您的表名是Players

SELECT TOP 100 PlayerId, Points
FROM Players
ORDER BY Points DESC
于 2012-07-11T13:51:57.123 回答
0
SELECT TOP 100 PlayerId FROM name_of_your_table ORDER BY Points DESC
于 2012-07-11T13:51:59.853 回答
0
SELECT TOP 100 *
FROM tblName ORDER BY Points DESC
于 2012-07-11T13:52:13.573 回答