*************需求1: 查询emp表中前5个员工*************************


使用伪列 rownum

每一张表 都有一列 字段名叫做 rownum 数据类型 number

这一个字段用来标示表中的每一条记录 第一条记录 rownum 值是1

第二条是2 依次类推 这个列是看不到的

 

select * from emp where rownum<=5


*************需求2: 查询emp表中第6-10名员工*************************

oracle的rownum 有个问题 只能和<=连用 ,>=就用不了了 如何解决?


口诀: 小于直接查、大于加行号


select * from
(select e.*,rownum r from emp e)
where r>=6 and r<=10

*************需求3:薪水最高的前五名雇员 (两层嵌套)*************************

select * from
(select * from emp order by sal desc)

where rownum<=5


*************需求4:薪水最高的6-10名雇员 (三层嵌套)*************************


select * from
(select t.*,rownum r from
(select * from emp order by sal desc) t)

where r>=6 and r<=10

 

**********************面试题: 各种数据的分页语句*************************
第一页 显示 1-10

第二页 显示 11-20

...

1.oracle


使用rownum

select * from emp where rownum<=5


2. mysql

select * from limit 0,5

第一个参数 0 从第一条开始

第二个参数 5 取5条

select * from limit 5,5 - 6-10条


3.sql server

top n

select top 5 * from emp