如何找到特定行的行号?

时间:2013-12-31 09:17:02

标签: c# sql sql-server-ce

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

enter image description here

我想得到第二行的行号。我使用以下代码:

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

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

3 个答案:

答案 0 :(得分:7)

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

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

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

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

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

剩下的就是让Order列自动增量,你就可以了。每次插入新记录时,该值将自动递增。所以你去了,现在你有一个订单,它代表了记录插入表格的顺序。你现在有了背景。

答案 1 :(得分:2)

也许这样的事情(如果我理解正确的话):

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

答案 2 :(得分:0)

试试这个

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