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

时间:2010-06-02 12:56:15

标签: db2

我必须一次只从数据库(DB2)获取50条记录,为此我一直在使用Row_Number,但现在这些人告诉我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 个答案:

答案 0 :(得分:3)

使用fetch子句

FETCH FIRST 50 ROWS ONLY

修改

看起来您使用的是startIndex和endIndex值。我意识到你将它们与Row进行比较,但是你有另一个要比较的索引吗?如果没有,并且你坚持从Row_Number移动,那么表可能需要另一个索引。

Select PLC.* From (Select omitting row_number())
Where yournewindex >= startIndex
Fetch first 50 rows only

答案 1 :(得分:0)

有人已经回答了这个问题。如果我没错,你就要求分页。

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