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.

相关文章

Java Oracle 结果集是Java语言中处理数据库查询结果的一种方...
Java AES和Oracle AES是现代加密技术中最常使用的两种AES加密...
Java是一种广泛应用的编程语言,具备可靠性、安全性、跨平台...
随着移动互联网的发展,抽奖活动成为了营销活动中不可或缺的...
Java和Oracle都是在计算机领域应用非常广泛的技术,他们经常...
Java 是一门非常流行的编程语言,它可以运行于各种操作系统上...