代码之家  ›  专栏  ›  技术社区  ›  Abhi

从DB2中的数据库中选择的记录数

db2
  •  0
  • Abhi  · 技术社区  · 16 年前

    我每次只能从数据库(DB2)中获取50条记录,为此我一直在使用 Row_Number 但现在有人说 罗氏数 它不稳定,并且有缺陷,所以现在我必须为它编写一个不同的查询,因为一次只能获取50条记录。

    所以有人能帮我吗?

    事先谢谢。

    我一直使用的查询是

    SELECT PLC.* 
    FROM
         (SELECT 
              ROW_NUMBER() OVER (ORDER BY PRDLN_CTLG_OID) AS Row,
              PRDLN_CTLG_OID, 
              PRODUCT_LINE_OID      AS  PRODUCT_LINE_OID, 
              RTRIM(CATALOG_ID)             AS  CATALOG_ID,
          FROM 
              PROD_LINE_CATALOG 
          WHERE 
              PRODUCT_LINE_OID = :productLineOID AND ACTV_IND = 1 
          ORDER BY CATALOG_ID) PLC
    WHERE  
        Row >= :startIndex AND Row <= :endIndex
    ORDER BY 
        PLC.CATALOG_ID DESC 
    WITH UR
    
    2 回复  |  直到 11 年前
        1
  •  3
  •   David Fox    16 年前

    使用FETCH子句

    FETCH FIRST 50 ROWS ONLY
    

    编辑

    看起来您使用的是startindex和endindex值。我知道你把这些和 Row ,但是您还有其他索引要比较吗?如果没有,并且您坚持从行编号开始移动,则可能表需要另一个索引。

    Select PLC.* From (Select omitting row_number())
    Where yournewindex >= startIndex
    Fetch first 50 rows only
    
        2
  •  0
  •   Community Mohan Dere    9 年前

    有人已经回答了那个问题。如果我没有错的话,你是在要求分页。

    Fastest most/efficient way to do pagination with SQL searching DB2