为什么以下
查询返回“零”记录:
SELECT * FROM records WHERE rownum >= 5 AND rownum <= 10
OR
SELECT * FROM records WHERE rownum >= 5
而以下查询返回正确的记录:
SELECT * FROM records WHERE rownum <= 15
问候,
– Ashish
在Oracle中,Rownum值在
查询的过滤阶段之后分配 – 它们不是表的行,它们是
查询结果集的行.
所以返回的第一行总是给出rownum 1,第二行返回rownum 2等
rownum值只有在分配后才会增加,所以任何查询都是
select * from t where ROWNUM > 1
永远不会返回任何结果.这个查询说:“我不想看到第一行返回给我,只有那一个,那是一个悖论,所以没有任何东西返回.
详见Ask Tom:On ROWNUM and Limiting Results.