Выбрать строки 10..20 из HR.departments
select *
from (select d.*, rownum rnum
from HR.departments d
where rownum <= 20)
where rnum >= 10
Если при этом набор данных нужно отсортировать, как чаще всего и бывает, то это выражение можно записать в виде
select *
from (select d.*, rownum rnum
from HR.departments d
where rownum <= 20
order by d.department_name)
where rnum >= 10
но работать будет не правильно - значения rownum определяются на этапе выборки данных и при выполнении order by порядок будет утерян.
Поэтому в таком случае можно обернуть выборку и сортировку в ещё один select:
select *
from (
select data.*, rownum rnum
from (
select d.*
from HR.departments d
order by d.department_name ) data
where rownum <= 20 )
where rnum >= 10
Комментариев нет:
Отправить комментарий