Аналог LIMIT и OFFSET в Oracle 11gR2

несколько секунд на чтение

Для того, чтобы ограничить количество результатов запроса, в MySQL и базах данных Oracle начиная с версии 12g существуют конструкции с LIMIT и OFFSET. LIMIT указывает количество записей, которое мы хотим получить, а OFFSET сколько записей нужно пропустить. В версии 11gR2, с которой я работаю, нет такой возможности и приходится хитрить с несколькими субселектами.

select * from  (
    select t.*, rownum rnum from (
        select * from test_table order by column_name
    ) t where rownum <= i
)  where rnum  >= j;

Внешние два селекта выполняются только для того, чтобы можно было указать первую и последнюю запись, которую мы хотим получить. Например, чтобы получить вторую запись, переменные i и j должны иметь значение 2, а чтобы получить пятую по десятую запись, нужно указать в условиях 5 и 10.

Понравился пост? Поделись в соцсетях и подписывайся на аккаунты в Twitter и Facebook!
Facebook Vk Ok LinkedIn Telegram Whatsapp

Похожие записи:

Сегодня при перезапуске базы данных, а перезапускал я базу данных Oracle в первый раз в жизни (в личных целях я пользуюсь практически только «мускулом» — MySQL), возникла проблема и с мыслями «наверное это надолго» я начал рыться в интернетах. К счастью, решение удалось найти дов...
Прошлым летом я допинал бакалавра в Бизнес-информатике и в октябре начал магистратуру. На работе я использую систему управления базами данных от Oracle, на курсе Data Warehouse (хранилище данных) сейчас я работаю с SQL Server. В этом посту я опишу несколько разлиичий между оракловским PL/SQ...
С начала лета я вплотную работаю с технологиями Oracle, как можно понять и по другим постам, в частности с процедурным расширением языка cтруктурированных запросов PL/SQL. Я решил написать пару записей на эту тему и начинаю с циклов. Сначала рассмотрим простейший вариант цикла FO...