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

Tug*_*lay 7 sql sql-server row rank

我有一张Toplist桌子,我希望获得用户的排名.我怎样才能获得行的索引?

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

如何避免这种性能影响?

Kay*_*son 14

你可以使用ROW.NUMBER

这是MySQL的示例语法

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

这是MsSQL的示例语法

SELECT ROW_NUMBER() OVER(ORDER BY YourColumn) AS Rank,TopListId
FROM TopList
Run Code Online (Sandbox Code Playgroud)


BIC*_*ube 11

你也可以这样做:

SELECT ROW_NUMBER() OVER(ORDER BY (SELECT 1)) AS MyIndex
FROM TopList
Run Code Online (Sandbox Code Playgroud)


小智 5

ROW_NUMBER() MS SQL

在代码中使用分析函数