[英]How to find row number of a record?
考虑下面的示例表
ProductDetailNo ProductDescription
224 Apples
225 Tomatoes
226 Potatoes
如何列出所选行的行号,如下所示?
RowNo ProductDetailNo Product Description
2 225 Tomatoes
在我的查询中使用row_number()只返回1对于单个记录,不管数据库中的逻辑行是什么。
谢谢,Damien。
尝试这个
WITH MyTable AS
(
SELECT ProductDetailNo, ProductDescription,
ROW_NUMBER() OVER ( ORDER BY ProductDetailNo ) AS 'RowNumber'
FROM Product
)
SELECT RowNumber, ProductDetailNo
FROM MyTable
WHERE ProductDetailNo = 225
请检查一下
WITH ArticleSearch AS
(
SELECT
ROW_NUMBER() OVER
(
ORDER BY tblProducts.ProductDetailNo
) AS RowNumber,
tblProducts.ProductDetailNo,
tblProducts.ProductDescription
FROM
tblProducts
)
SELECT
a.RowNumber AS SlNo,
a.ProductDetailNo,
a.ProductDescription
FROM
ArticleSearch a
WHERE
a.ProductDetailNo=225
这个如何?
SELECT RowNo, ProductDetailNo, ProductDescription
FROM (SELECT ROW_NUMBER() as RowNo, ProductDetailNo, ProductDescription
FROM TheTable) as t
WHERE ProductDetailNo = 225;
表行没有固有的行号。 ROW_NUMBER()
仅为您提供特定结果集中的行数。 因此,当结果集仅包含1条记录时,预期结果是总是得到1
。 如果需要行号,则表模式应包含类似自动递增IDENTITY
列的内容。
WITH productCTE
AS
(SELECT ROW_NUMBER() OVER(ORDER BY ProductDetailNo, ProductDescription) AS RowNo, ProductDetailNo, ProductDescription
FROM tbl_Products
)
SELECT * FROM productCTE
WHERE RowNo = 2
您收到的行号来自结果行数。 即如果你的结果只有一个元组,那么行号。 永远是1。
要获取整个表的行号,您应该向表中添加一个额外的属性,一个带有自动增量的RowNo 。
希望这会有所帮助,但SQL可能会为您提供更好的解决方案!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.