ORACLE 中ROWNUM用法

Oracle中的ROWNUM伪列在使用时不支持>,>=,=,between…and等操作,因为它是在查询结果集后添加的序列号。理解ROWNUM从1开始且在查询过程中动态生成的特点,可以帮助解释一些看似奇怪的结果。例如,`rownum > 10`无法获取期望的记录,因为第一条记录的ROWNUM始终为1,导致所有记录都不满足条件。要实现类似需求,通常需要嵌套查询。ROWID虽然也是伪列,但它表示记录的物理位置,可以用于直接定位。" 108608211,10095983,使用Python在ARCMAP中批量裁剪地图,"['GIS处理', 'Python编程', 'ARCMAP工具', '地图数据操作', '地理信息系统']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

对于 Oracle 的 rownum 问题,很多资料都说不支持>,>=,=,between…and,只能用以上符号(<、<=、!=),并非说用>,>=,=,between…and 时会提示SQL语法错误,而是经常是查不出一条记录来,还会出现似乎是莫名其妙的结果来,其实您只要理解好了这个 rownum 伪列的意义就不应该感到惊奇,同样是伪列,rownum 与 rowid 可有些不一样,下面以例子说明

假设某个表 t1(c1) 有 20 条记录

如果用 select rownum,c1 from t1 where rownum < 10, 只要是用小于号,查出来的结果很容易地与一般理解在概念上能达成一致,应该不会有任何疑问的。

可如果用 select rownum,c1 from t1 where rownum > 10 (如果写下这样的查询语句,这时候在您的头脑中应该是想得到表中后面10条记录),你就会发现,显示出来的结果要让您失望了,也许您还会怀疑是不谁删了一些记录,然后查看记录数,仍然是 20 条啊?那问题是出在哪呢?

先好好理解 rownum 的意义吧。因为ROWNUM是对结果集加的一个伪列,即先查到结果集之后再加上去的一个列 (强调:先要有结果集)。简单的说 rownum 是对符合条件结果的序列号。它总是从1开始排起

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值