为什么以下查询返回"零"记录:
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和限制结果.