Расположение NULL
Ключевое слово NULLS
определяет, где в отсортированном наборе данных будут находиться значения NULL
соответствующего столбца – в начале выборки (FIRST
) или в конце (LAST
). По умолчанию принимается NULLS FIRST
.
Ключевое слово NULLS
определяет, где в отсортированном наборе данных будут находиться значения NULL
соответствующего столбца – в начале выборки (FIRST
) или в конце (LAST
). По умолчанию принимается NULLS FIRST
.
Части выборок SELECT
, участвующих в объединении UNION
, не могут быть отсортированы с использованием предложения ORDER BY
.Однако вы можете достичь желаемого результата с использованием производных таблиц или общих табличных выражений.Предложение ORDER BY
, записанное последним в объединении, будет применено ко всей выборке в целом, а не к последней его части.Для объединений единственно возможными элементами сортировки являются целочисленные литералы, указывающие на позиции столбцов, необязательно сопровождаемые ASC | DESC
и/или NULLS {FIRST | LAST}
директивами.
В описанном ниже запросе выборка будет отсортирована по возрастанию по столбцам RDB$CHARACTER_SET_ID
, RDB$COLLATION_ID
таблицы RDB$COLLATIONS
:
SELECT
RDB$CHARACTER_SET_ID AS CHARSET_ID,
RDB$COLLATION_ID AS COLL_ID,
RDB$COLLATION_NAME AS NAME
FROM RDB$COLLATIONS
ORDER BY RDB$CHARACTER_SET_ID, RDB$COLLATION_ID
То же самое, но сортировка производится по псевдонимам столбцов:
SELECT
RDB$CHARACTER_SET_ID AS CHARSET_ID,
RDB$COLLATION_ID AS COLL_ID,
RDB$COLLATION_NAME AS NAME
FROM RDB$COLLATIONS
ORDER BY CHARSET_ID, COLL_ID
В следующем запросе производится сортировка, по номерам столбцов:
SELECT
RDB$CHARACTER_SET_ID AS CHARSET_ID,
RDB$COLLATION_ID AS COLL_ID,
RDB$COLLATION_NAME AS NAME
FROM RDB$COLLATIONS
ORDER BY 1, 2
Как было выше сказано, такая сортировка тоже допустима, но не рекомендуется:
SELECT *
FROM RDB$COLLATIONS
ORDER BY 3, 2
В данном запросе сортировка происходит по второму столбцу таблицы BOOKS
:
SELECT
BOOKS.*,
FILMS.DIRECTOR
FROM BOOKS, FILMS
ORDER BY 2
Warning
|
Обратите внимание на то, что выражения, результатом вычисления которых должны быть целые неотрицательные числа, будут интерпретироваться как номер столбца и вызовут исключение, если они не будут в диапазоне от 1 до числа столбцов.
Примечания:
|
Сортировка по убыванию значений столбца PROCESS_TIME
с размещением значений NULL
в начале выборки:
SELECT *
FROM MSG
ORDER BY PROCESS_TIME DESC NULLS FIRST
Сортировка выборки полученной объединением выборок из двух запросов.Выборка сортируется по убыванию значений второго столбца с размещением NULL
значений в конце списка и возрастанием значений первого столбца с размещением NULL
значений в начале списка.
SELECT
DOC_NUMBER, DOC_DATE
FROM PAYORDER
UNION ALL
SELECT
DOC_NUMBER, DOC_DATE
FROM BUDGORDER
ORDER BY 2 DESC NULLS LAST, 1 ASC NULLS FIRST
ROWS
Получение части строк из упорядоченного набора.
SELECT <columns> FROM ... [WHERE ...] [ORDER BY ...] ROWS <value-expression> [TO <value-expression>]
Параметр | Описание |
---|---|
value-expression |
Любые целочисленные выражения. |
Предложение ROWS
было введено для совместимости с Interbase 6.5 и выше.
В отличие от FIRST
и SKIP
, выражение ROWS
принимает все типы целочисленных (integer) выражений в качестве аргумента – без скобок! Конечно, скобки могут требоваться для правильных вычислений внутри выражения, и вложенный запрос также должен быть обернут в скобки. Если результат выражения не явлется целым числом, то будет приведено к целому числу, если это возможно.
Important
|
|
Вызов ROWS m
приведёт к возвращению первых m записей из набора данных.