微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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.

原文地址:https://www.jb51.cc/oracle/204895.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐