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

17
我有一个名为Toplist的表,我想要获取某个用户的排名。如何获取该行的索引?
不幸的是,我正在获取所有行并在for循环中检查用户ID,这对我的应用程序性能产生了重大影响。
如何避免这种性能影响?

排名与行号不同。http://technet.microsoft.com/zh-cn/library/ms189798.aspx - Tim Schmelter
由于Tim是100%正确的,我认为在“排行榜”中,行号就成为了排名? - Mad Dog Tannen
3个回答

27

你可以使用 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

11
您也可以像这样做:
SELECT ROW_NUMBER() OVER(ORDER BY (SELECT 1)) AS MyIndex
FROM TopList

5

谢谢 @realnumber3012 :) - Tugrul Emre Atalay

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接