如何从SQL Server中的表中获取行索引?

时间:2013-11-06 08:19:00

标签: sql sql-server row rank

我有一个Toplist表,我希望获得用户的排名。我怎样才能获得行的索引?

不幸的是,我收到所有行并检查用户ID的for循环,这对我的应用程序的性能有重大影响。

如何避免这种性能影响?

3 个答案:

答案 0 :(得分:11)

您可以使用ROW.NUMBER

这是MySQL的示例语法

SELECT  t1.toplistId, 
        @RankRow := @RankRow+ 1 AS Rank
FROM    toplist t1
JOIN    (SELECT @RankRow := 0) r;

这是MsSQL

的示例语法
SELECT ROW_NUMBER() OVER(ORDER BY YourColumn) AS Rank,TopListId
FROM TopList

答案 1 :(得分:4)

ROW_NUMBER() MS SQL

在代码分析函数中使用

答案 2 :(得分:1)

您还可以执行以下操作:

SELECT ROW_NUMBER() OVER(ORDER BY (SELECT 1)) AS MyIndex
FROM TopList