Oracle / SQL:为什么查询“SELECT * FROM records WHERE rownum> = 5 AND rownum <= 10” - 返回零行

前端之家收集整理的这篇文章主要介绍了Oracle / SQL:为什么查询“SELECT * FROM records WHERE rownum> = 5 AND rownum <= 10” - 返回零行前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
为什么以下查询返回“零”记录:
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.

猜你在找的Oracle相关文章