我有一个这样的数据库表:
我想得到第二行的行号。我使用以下代码:
SELECT ROW_NUMBER() OVER(ORDER BY Name) From Deposit WHERE Name='Murali'
但是,它不起作用。代码有什么问题? 提前谢谢。
答案 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'