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

Posted

技术标签:

【中文标题】如何从 SQL Server 中的表中获取行的索引?【英文标题】:How can I get row's index from a table in SQL Server? 【发布时间】:2013-11-17 09:24:57 【问题描述】:

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

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

如何避免这种性能影响?

【问题讨论】:

排名与行号不同。 technet.microsoft.com/en-us/library/ms189798.aspx 由于 Tim 100% 正确,我认为在“toplist”中,行号成为排名? 【参考方案1】:

你也可以这样做:

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

【讨论】:

【参考方案2】:

ROW_NUMBER() MS SQL

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

【讨论】:

谢谢@realnumber3012 :)【参考方案3】:

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

【讨论】:

以上是关于如何从 SQL Server 中的表中获取行的索引?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 SQL Server 中特定数据库的表中获取所有列名?

如何从 SQL Server 中的表中删除重复行 [重复]

从具有特定值的表中获取列名

如何从存储在文件中的表中获取特定索引

如何估计 SQL Server 索引大小

如何从sql server中的表中查询json数组类型列的值?