You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle中ROWNUM小于条件生效,大于条件无结果的问题咨询

问题原因解析

这是Oracle中ROWNUM伪列的特性导致的,核心逻辑如下:

  • ROWNUM是Oracle在返回结果集的过程中逐行分配的序号,从1开始递增。
  • 只有当某一行被分配了ROWNUM=1并满足筛选条件时,Oracle才会继续为下一行分配ROWNUM=2,以此类推。
  • 当你使用ROWNUM > 200作为筛选条件时,第一行的ROWNUM是1,不满足>200的条件,不会被纳入结果集。由于没有行被选中,Oracle不会继续为后续行分配ROWNUM,最终整个查询就没有返回结果。

如果想要获取第201行及以后的数据,需要先给ROWNUM指定别名,让Oracle先完成所有行的序号分配,再进行筛选,示例SQL如下:

select * from (
    select t1.*, ROWNUM as rn 
    from (select * from myTable where fk = 1234) t1
) where rn > 200;

内容的提问来源于stack exchange,提问作者Nila

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 01:12:04