SELECT * FROM (
SELECT ROWNUM AS my_rownum,table_a.* FROM
( select * from T where object_id=20) table_a
WHERE ROWNUM <= 160 ) WHERE my_rownum > 140;
SELECT ROWNUM AS my_rownum,table_a.* FROM
( select * from T where object_id=20) table_a
WHERE ROWNUM <= 160 ) WHERE my_rownum > 140;
解决方案 »
- 目前能替代SQLPLUS最好的工具是什么啊
- 用DB LINK连接到别的数据库,查询的时候出错
- 怎么像sqlserver一样附加数据库呀
- 【新手发问】SQLserver语句转ORACLE的问题
- 怎么建立一个自动增长列...
- 小妹学习oracle又碰上小问题了,烦请各位大哥再看看
- 求助:oracle for solaris安装中的一些问题!!!!
- 请问在Solaris中,是否可以通过编程(最好是shell)自动配置Oracle客户端?
- 请问oracle的SID是什么意思?我如何查看?
- 即学ORACLE,各位大虾有什么好的建议!请多多指教!!
- sql和ora存储过程转换,急求帮助,先谢谢啦!!!
- 各位ORACLE高手介绍本Oracle sql的书籍
这里需要把rownum作为一个实际存在的字段,然后限制my_rownum>140
from (select t.*, rownum as rn from t)
where rn > 140
and rn <= 160;
rownum是伪列,是对符合条件结果的序列号。总是从1开始的,比如1,2,3,4,5,6,7,8,9……
只要你在条件里写rownum>n(n是个大于0的整数),那你得到的结果就是空,取不到数据。
所以,一般采用套一层的写法,把rownum作为一个实际存在的字段,希望这样说能让楼主理解
rownum即先查到结果集之后再加上去的一个列 (强调:先要有结果集)
当查出一条数据后,rownum对应的就是1,如果条件里存在>非0或>=1的数,当第一条数据出来之后判断where的时候他是错误的,下一条数据时rownum的初值还是从1开始,又会出现这种情况,最终一条数据也查不出来可以用一个条件 同 5 楼