oracle中取出第n行后的m条数据

来源:百度知道 编辑:UC知道 时间:2024/05/23 02:16:23
select * from employees
where employees_id not in
(select employees_id from employees where rownum<=n order by employees_id)
and rownum<=m order by employees_id

如果不加order by语句不会出错,但加上后会出错,为什么?请高手指点。
请问这样多层嵌套会不会影响执行效率?
小弟还碰到一个问题:
select employees_id,name from employees where rownum<=(n+m)
minus
select employees_id,name from employees where rownum<=n
可以正常执行,(其中employees_id为主键),但若改为
select name from employees where rownum<=(n+m)
minus
select name from employees where rownum<=n
输出结果却为空!!为什么?

select employees_id from employees where rownum<=n order by employees_id
将这个子查询中的order by 去掉就可以了
可能与oracle觉得在这里order by没有意义吧!
给你的改进的办法
select * from employees
where employees_id not in
(select employees_id from(select rownum rid , employees_id from employees order by employees_id) where rid<=n )
and rownum<=m order by employees_id