FirebirdSQL logo

Примеры использования FIRST и SKIP

Следующий запрос вернёт первые 10 имён из таблицы PEOPLE (имена также будут отсортированы, см.ниже раздел ORDER BY):

SELECT FIRST 10 id, name
FROM People
ORDER BY name ASC

Следующий запрос вернёт все записи из таблицы PEOPLE, за исключением первых 10 имён:

SELECT SKIP 10 id, name
FROM People
ORDER BY name ASC

А этот запрос вернёт последние 10 записей (обратите внимание на двойные скобки):

SELECT SKIP ((SELECT COUNT(*) - 10 FROM People))
  id, name
FROM People
ORDER BY name ASC

Этот запрос вернёт строки 81-100 из таблицы PEOPLE:

SELECT FIRST 20 SKIP 80 id, name
FROM People
ORDER BY name ASC
См. также:

“FETCH`, OFFSET”, `ROWS.

ORDER BY

Результат выборки данных при выполнении оператора SELECT по умолчанию никак не упорядочивается (хотя довольно часто происходит упорядочение в хронологическом порядке помещения строк в таблицу операторами INSERT). Предложение ORDER BY позволяет задать необходимый порядок при выборке данных.

Синтаксис
SELECT ... FROM ...
...
ORDER BY <ordering-item> [, <ordering-item> ...]

<ordering-item> ::=
  {col-name | col-alias | col-position | expression}
  [COLLATE collation-name]
  [ASC[ENDING] | DESC[ENDING]]
  [NULLS {FIRST | LAST}]
Table 1. Параметры предложения ORDER BY
Параметр Описание

col-name

Полное имя столбца.

col-alias

Алиас (псевдоним) столбца.

col-position

Позиция столбца.

expression

Произвольное выражение.

collation-name

Имя сопоставления (порядка сортировки).

В предложении через запятую перечисляются столбцы, по которым нужно упорядочить результирующий набор данных.Можно задавать имя столбца, псевдоним, присвоенный столбцу в списке выбора при помощи ключевого слова AS, или порядковый номер столбца в списке выбора.В одном предложении можно для разных столбцов смешивать форму записи.Например, один столбец в списке сортировки может быть задан своим именем, а другой порядковым номером.

Important

Если вы сортируете по позиции столбца или его алиасу, то выражение соответствующее этой позиции (алиасу) будет скопировано из списка выборки SELECT.Это касается и подзапросов, таким образом, подзапрос будет выполняться, по крайней мере, два раза.

Note

В случае сортировки по номеру столбца для запроса вида SELECT * сервер раскрывает звёздочку (*) для определения сортируемых столбцов.Однако использование данной особенности в ваших запросах является “плохой практикой”.