SQL оператор OFFSET FETCH

Резюме: в этой статье мы покажем, как применять команду SQL FETCH для ограничения строк выводимых в результате выполнения SQL запроса.

Вводная информация по предложению SQL FETCH

Ограничить количество строк, возвращаемых запросом SELECT можно если применить команду LIMIT. Операнд LIMIT поддерживается в большинстве систем распределенного управления базами данных. В том числе MySQL, H2 и HSQLDB. Тем не менее предложение LIMIT отсутствует в стандарте SQL.

В SQL:2008 было введено предложение OFFSET FETCH, которое имеет схожую функцию с предложением LIMIT.

OFFSET FETCH позволяет пропустить N начальных строк в полученном результате, прежде чем начать возвращать какие-либо строчки.

Рассмотрим синтаксис предложения SQL FETCH ниже:

syntax of the SQL FETCH clause

Текущий синтаксис применяет следующие правила:

  • ROW и ROWS, FIRST и NEXT являются синонимами. Поэтому их можно применять как взаимозаменяемые.
  • Offset_rows — это целое число. Оно должно быть либо нулевым, либо положительным. Если offset_rows больше общего количества записей в наборе результатов, ни одна строка не будет возвращена.
  • fetch_rows — это также целое число, определяющее количество возвращаемых строк. Значение fetch_rows всегда должно быть либо равно, либо больше 1.

Так как все строки хранятся в таблице в неопределенном разрозненном порядке, для получения последовательного вывода всегда рекомендуется применять операнд FETCH вместе с операндом ORDER BY.

Многие системы баз данных поддерживают предложение OFFSET FETCH, включая Oracle Database 12c+, PostgreSQL 10+ и Microsoft SQL Server 2012+. Однако каждая система баз данных реализует предложение OFFSET FETCH по-разному, с некоторыми отличиями.

Предложение OFFSET FETCH обычно используется в клиентских или веб-приложениях, где требуется постраничная сортировка. Например, если каждая страница содержит десять строк, то для получения строк второй страницы можно пропустить первые десять строк и вернуть следующие десять строк.

Примеры SQL FETCH

Чтобы продемонстрировать наглядно, будем использовать знакомую читателям нашего сайта таблицу employees в качестве примера.

структура таблицы employees

Следующий оператор возвращает первого сотрудника, у которого самая высокая зарплата:

first employee who has the highest salary

В данном случае, во-первых, предложение ORDER BY сортирует сотрудников по зарплате от высокой к низкой. Предложение OFFSET пропускает нулевые строки, а предложение FETCH возвращает первую строку.

Следующий оператор сортирует сотрудников по зарплате, пропускает первые пять сотрудников с самой высокой зарплатой и извлекает следующие пять.

sorts the employees by salary, skips the first five employees with the highest salary

Сводка

Применяйте команду SQL FETCH, для того чтобы ограничить количество строк итогового результата запроса.

Предложение SQL FETCH пропускает N строк в наборе результатов, прежде чем начать возвращать какие-либо строки.

Предыдущая статья: SQL LIMIT

Следующая статья: SQL WHERE

Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: