oracle-Rownum伪列
我们经常会查询一些间断的数据,好比喻查询成绩,一般都会列出前十名和后十名,这个时候我们就可以用到伪列rownum,它可以根据条件查询到排行前面或者后面的数据。
举一个例子:查询员工表中,根据姓名排行前面十名员工的信息。
select *
from (select * from employees order by first_name)
where rownum<=10
但是对于rownum只能使用<或<=,而使用=,>,>=都将不能返回任何数据
例如:查询员工表中,根据姓名排行排十一到二十的员工的员工信息。
select *
from (select * from employees order by first_name)
where rownum>10 and rownum<=20
正确的写法如下:
select *
from (select rownum rn,employee_id,salary,first_name
from (select employee_id,salary,first_name
from employees order by first_name))
where rn>10 and rn<=20