以下查询的结果对我来说很奇怪,(我是 DB2 的新手)。它按我在查询中没有提到的表中的列对结果进行排序。
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
** 显然,这是由于“OPTIMIZE FOR 100 ROWS”子句和使用标量值(ROWNUMBER() 进行过滤(在 WHERE 子句中)。
** 如果我进一步缩小我的问题,我想知道第一个查询和第二个查询的不同顺序的原因是什么。
谢谢大家