select * from ( select rownum as a , emp.* from emp where rownum < 11) b where b.a > 5 这个效率如何啊,oracle的查询优化器是如何处理这个sql语句啊,是不是先读内查询,在读外查询,相当一个2重循环啊?rownum 的是给整个表所有的行编号,还是针对通过过滤条件查询出来某些行,再给这些行编号?比如这个例子,如果我还要有个条件,要求这一个特定的部门的第5到第11个雇员,那要怎么写sql语句啊?
解决方案 »
- LogMiner的问题:查询v$Logmnr_contents 只有create 和drop,见鬼
- 数据库如何查看执行计划以及性能问题
- 请大侠帮忙看下这个错误 ORA-24315
- 求sql,数据汇总
- 请问怎么更新这样的记录?
- 咨询各位Oracle在三层架构中如何跟踪调试软件
- 在Enterprise Manager Console中无法登陆数据库!
- 用DELPHI调用ORACLE编写的返回结果集的存储过程,怎么做?
- 请教,oracle网上下载的版本与企业里用的正版有什么区别?
- oracle 的客户端要什么软件,(急!请教!)
- select INTO 为什么PL/SQL 提示缺少关键字?
- Oracle为何采用表空间存储数据???
你这个是先取11条纪录,然后再过滤掉前5条
特定部门
那你用 部门编号=条件啊
如果是要每个部门的5-11
就把里面的rownum 换成 row_number() over (partition by 部门 order by 员工编号)外面写a>=5 and a<=11
我有个问题,rownum是对什么而言,如果是对整个表的编号,那我如何获得麽个部门,再获得这个部门中按编号顺序的第5~11个?
可以按部门分组后,按排序条件,对同一组的纪录进行编号
select emp.* from emp where rownum < 11
minus
select emp.* from emp where rownum <=5