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

Vin*_*ini 10 sql oracle

为什么以下查询返回"零"记录:

SELECT * FROM records WHERE rownum >= 5 AND rownum <= 10

     OR

SELECT * FROM records WHERE rownum >= 5 

以下查询返回正确的记录:

SELECT * FROM records WHERE rownum <= 15

问候,
- Ashish

cod*_*ike 32

在Oracle中,Rownum值是在查询的过滤阶段之后分配的 - 它们不是表的行,它们是查询结果集的行.

所以返回的第一行将始终给出rownum 1,第二行返回rownum 2,等等.

rownum值仅在分配后递增,因此任何查询都可以

select * from t where ROWNUM > 1
Run Code Online (Sandbox Code Playgroud)

永远不会返回任何结果.这个查询说'我不想看到第一行返回给我,只有那之后的那一行',这是一个悖论,所以没有任何东西被归还.

有关详细信息,请参阅询问Tom:在ROWNUM和限制结果.