Для того, чтобы ограничить количество результатов запроса, в 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!