select * from (select rownum no,id,name from student where rownum <=10 ) where no >=6;
看了好多上面那种写法实现分页,看过两条件写在一起不过是用between的。能不能把外层去掉啊 写成下面的格式:
select rownum no,id,name from student where rownum <=10 and no >=6;
楼上的代码貌似有问题的说 运行起来应该会报invalid identifier的错误
rownum的用法正常使用只能用于查询< 某列数范围内的 不允许出现>某列数
如果不嵌套,你只能查询前半段 即
: select rownum no,app_id,app_name from app_info where rownum<10;
你必须嵌套,并对ROWNUM列使用别名后, 在外层调用时, ORACLE才会把他当作普通
列, 允许对其使用>某列数的查询方法
[size=medium]不可以的,rownum是对一个已知的数列进行去排列的
但是好像可以这样
你试试[/size]
[code="java"]select rownum no,id,name from student where rownum <=10 and no >=6 order by id; [/code]
[size=medium]order by一下,就成一个已知的数列了,之后就可以对他进行rownum了
ps:
手头没有pl/sql不好意思了哦
rownum必须对一个已知的数列才好用的哦,呵呵[/size]
rownum 是对查询出符合条件的结果进行统计
即:每查询一条符合条件的数据,该行数据的rownum 才确定
如果这样写
select rownum no,id,name from student where rownum <=10 and no >=6;
先查询第一条数据,rownum 是 1 又因为 where条件no>=6不符合条件,此数据被抛弃,
依次类推,
永远都查不出数据.
[size=medium]2楼说的对,想起来了
如果不嵌套,会先取得前半段的数据,之后对前半段内的数据进行排序
这样不关多少条数据只会取得前几条数据,后面的数据取不到
不好意思了,告诉错了
必须嵌套的
oracle没有想top那样的东西,rownum这种虚行数,只能对有范围的数据进行使用
呵呵,还是得嵌套啊[/size]