2010-06-02 64 views
0

我必須從數據庫(DB2)一次只取50條記錄,因爲我一直在使用Row_Number,但現在有人告訴我這個Row_Number不穩定並且存在錯誤所以現在我必須寫同一個不同的查詢,因爲我一次只能獲取50條記錄。DB2中來自數據庫的選定記錄數

那麼請任何機構能幫助我一樣嗎?

在此先感謝。

,我一直在使用的查詢是

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 
+4

你問12個問題,並收到了二十三(23)到目前爲止的答案超過11(11)個月,但你有沒有接受任何。如何獎勵那些你認爲有用的人? – Salil 2010-06-02 12:59:54

回答

3

使用fetch子句

FETCH FIRST 50 ROWS ONLY 

編輯

它看起來像您使用startIndex和endIndex的值。我意識到你比較這些,但你有另一個指標進行比較?如果不是,並且您堅持從Row_Number移動,那麼表格可能需要另一個索引。

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

,而不像在查詢開始處的LIMIT或TOP子句,FETCH子句在末尾 – Leslie 2010-06-02 20:06:35

+0

David,但是獲取記錄將始終僅給出從數據庫開始的第N行,並且如果我想在兩者之間實現記錄像50到100的東西肯定不會支持它。 – Abhi 2010-06-03 10:11:59