如何找到特定行的行号?

Posted

技术标签:

【中文标题】如何找到特定行的行号?【英文标题】:How can I find the row number of a particular row? 【发布时间】:2014-01-18 05:49:33 【问题描述】:

我有一个这样的数据库表:

我想获取第二行的行号。我使用以下代码:

SELECT ROW_NUMBER() OVER(ORDER BY Name) From Deposit WHERE Name='Murali'

但是,它不起作用。代码有什么问题? 提前致谢。

【问题讨论】:

它仍然无法正常工作。显示的错误是:“不支持 OVER SQL 构造或语句” 这被标记为SQL-Server-CE,不支持ROW_NUMBER()。另见:***.com/questions/8699955/sql-server-ce-row-number @user2923116:看看SQL Server CE - ROW_NUMBER 是的..我正在使用 sql-server-ce.. 【参考方案1】:

ROW_NUMBER 函数返回结果数据集中的行号。

在您的查询中,您将结果限制为仅限名称为Murali 的人。由于您只有一条这样的记录,因此返回 1 是正常的。

在 SQL 中没有行号这样的概念。表行没有顺序。只有在进行 SQL 查询时,顺序的概念才有意义。没有 SQL 查询,您根本无法谈论订单和行号。

看来您需要为每个用户介绍一些订单号。实现这一点的正确方法是将Order 列添加到您的Deposit 表中。现在为了检索它,您将使用以下查询:

SELECT [Order] From Deposit WHERE Name = 'Murali'

剩下的就是让Order 列自动递增,然后你就可以开始了。每次插入新记录时,该值将自动递增。所以你去,现在你有一个顺序,它代表记录被插入到表中的顺序。你现在有了上下文。

【讨论】:

有没有办法找到行号..? 您需要先定义行号的含义。因为我在回答中已经解释过 SQL 中没有这样的概念。 我的目标是当用户输入“Murali”时,它应该返回 2。有什么办法..? 但是为什么它应该返回 2?这没有任何意义。如果您想引入这样的概念,只需将Order 列添加到您将存储此信息的表中。 那么您只需要一个Order 列。【参考方案2】:

可能是这样的(如果我理解正确的话):

SELECT Q.RN FROM (
    SELECT ROW_NUMBER() OVER(ORDER BY Name) AS RN, * From Deposit
) AS Q
WHERE Q.Name = 'Murali'

【讨论】:

【参考方案3】:

试试这个

WITH TempTable AS
    (
        SELECT Name,ROW_NUMBER() OVER (ORDER BY Name) AS 'RowNumber'
        FROM Deposit
    ) 
    SELECT RowNumber,Name
    FROM TempTable 
WHERE Name='Murali'

【讨论】:

以上是关于如何找到特定行的行号?的主要内容,如果未能解决你的问题,请参考以下文章

如何从特定行号读取csv文件到提供的行号? [关闭]

Notepad++ 如何去掉匹配结果的行号?

通过 sqlite 根据特定条件获取行号

excle vba,如何查找一个已知值的行号和列号?

如何获取gridcontrol当前选中行的行号?

工商银行开户行行号是啥