繁体   English   中英

如何查找记录的行号?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM