13

我有一张Toplist桌子,我想获得用户的排名。如何获取行的索引?

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

如何避免这种性能影响?

4

3 回答 3

24

您可以使用 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
于 2013-11-06T08:24:33.060 回答
5

ROW_NUMBER() 微软 SQL

在您的代码分析函数中使用

于 2013-11-06T08:25:50.173 回答
2

你也可以这样做:

SELECT ROW_NUMBER() OVER(ORDER BY (SELECT 1)) AS MyIndex
FROM TopList
于 2020-03-11T23:30:18.590 回答