2013-01-08 31 views
0

以下查詢的結果對我來說很奇怪(我是DB2的新手)。它按照我在查詢中沒有提到的表格中的列對結果進行排序。DB2按查詢中未提及的coumn對結果進行排序

WITH RESULT AS ( 
    SELECT T1.*, ROWNUMBER() OVER() AS RNUM 
    FROM TableNAmeT1 
    WHERE column1= 'xyz' 
) 

SELECT * 
    FROM RESULT 
WHERE RNUM BETWEEN 1 AND 100 
ORDER BY ORDER OF RESULT OPTIMIZE FOR 100 ROWS 

它不排序,當我使用下面的查詢

WITH RESULT AS ( 
    SELECT T1.*, ROWNUMBER() OVER() AS RNUM 
    FROM TableNAmeT1 
    WHERE column1= 'xyz' 
) 

SELECT * 
    FROM RESULT 
ORDER BY ORDER OF RESULT 
  • 這是因爲該表或任何其他的指標,通常這些表是FIFO

**很明顯,這是由於「優化100行」子句和使用標量值(ROWNUMBER())進行過濾(在WHERE子句中)

**如果我進一步縮小我的問題的範圍,我想知道第一個查詢和第二個查詢的差異順序是什麼原因。

感謝所有

回答

0

,當你不明確「按訂單」指定一個結果是無序的,也就是說,它是:返回的數據,因爲它是牽強。通常這會按照使用的索引順序進行。

您可能想要「解釋」語句以查看,db2實際執行的操作以及它正在使用的索引。 (DB2EXFMT -d數據庫-e用戶-t -v -w%-1%-s - #0 -n%-g OTIC)

+0

感謝彼得... 問題是結果不顯示,因爲它是在表, – user978103

相關問題