请教oracle两个问题(50分)

Z

zhjwjan

Unregistered / Unconfirmed
GUEST, unregistred user!
1。select * from table1 where rownum > n , n > 0时都无记录返回,为什么?
我想返回 rownum> n 的记录该怎么办?如果要返回 n<rownum<m 的记录又该怎么办?

2。select * from (select * from table1 where id > 100 order by id) where rownum < n
提示在order前面缺少右括号,怎么会这样?

我的数据库是oracle8.0.5。
 
ROWNUM伪列除了用于计算返回的行数,它还有一个重要用途是限制返回的数据行数,所以用
rownum<n是可以的
 
1、select * from (select a.*, rownum SN from table1 a) t
where t.sn between 30 and 40;

2、这个写法在9i下没有问题
 
1、rownum是虚列只能控制返回的行数据,不能控返回其中的某段记录的。
2、你把order by ID去掉就可以了,如果一定要加order by 可以如下写:
select * from table1 where id > 100 and rownum < n order by id
 
1、rownum> n 是不能够实现的,n<rownum<m 可以这样写:
select * from table1 where rownum<m
minus --减去结果集
select * from table1 where rownum<n
 
多人接受答案了。
 
顶部