Ограничение выдачи результата
В 12й версии СУБД появилась возможность лимитировать выдачу результатов. Если нужна предсказуемость результатов, то нужно использовать ORDER BY в основном запросе. Синтаксис показан выше на скриншоте.
OFFSET - индекс начального элемента (начинается с “0”). По умолчанию, “0”, т.е. считываем с начала.
ROW | ROWS - для семантической ясности, взаимозаменямы.
FIRST | NEXT - для семантической ясности, взаимозаменямы.
rowcount | percent PERCENT - количество строк или количество %.
ROW | ROWS - для семантической ясности, взаимозаменямы.
ONLY | WITH TIES: ONLY - возвращает, только то количество, которое мы указали. TIES - будет добавлены записи с тем же значением, что и последняя запись, если они есть.
Удобно использовать данный синтаксис для осуществления пагинации по выборке.
По ссылке примеры применения из документации для Oracle 18.
#sql #offset
В 12й версии СУБД появилась возможность лимитировать выдачу результатов. Если нужна предсказуемость результатов, то нужно использовать ORDER BY в основном запросе. Синтаксис показан выше на скриншоте.
OFFSET - индекс начального элемента (начинается с “0”). По умолчанию, “0”, т.е. считываем с начала.
ROW | ROWS - для семантической ясности, взаимозаменямы.
FIRST | NEXT - для семантической ясности, взаимозаменямы.
rowcount | percent PERCENT - количество строк или количество %.
ROW | ROWS - для семантической ясности, взаимозаменямы.
ONLY | WITH TIES: ONLY - возвращает, только то количество, которое мы указали. TIES - будет добавлены записи с тем же значением, что и последняя запись, если они есть.
Удобно использовать данный синтаксис для осуществления пагинации по выборке.
По ссылке примеры применения из документации для Oracle 18.
#sql #offset
👍1
Способы получения Top-N записей (пагинация)
Существует три способа работать с пагинацией на уровне SQL. Допустим нам надо получить строки с 10 по 20.
Способ 1. Rownum + order by
По скорости примерно одинаковы. Как-нибудь, запилю видюшку с демонстрацией.
#sql #пагинация #rowcount #аналитическиефункции #offset
Существует три способа работать с пагинацией на уровне SQL. Допустим нам надо получить строки с 10 по 20.
Способ 1. Rownum + order by
select *Способ 2. Аналитическая функция row_number
from (select rownum rn,
a.*
from (select *
from employees e
order by e.hire_date) a
where rownum < 20)
where rn >= 10;
select *Способ 3. Использование расширения SQL (c Oracle 12c).
from (select row_number() over(order by t.hire_date) rn,
t.*
from employees t
order by t.hire_date) a
where a.rn between 10 and 19;
select t.*
from employees t
order by hire_date
offset 9 rows fetch next 10 rows only;
По скорости примерно одинаковы. Как-нибудь, запилю видюшку с демонстрацией.
#sql #пагинация #rowcount #аналитическиефункции #offset
👍3