我必须一次只从数据库(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
答案 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