Галерея
7757 8119 8300 8698 8817 9504 9722 9937
Интересные записи
Топовые новости
Новое

Предложение ORDER BY

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


Синтаксис SQL 2003

ORDER BY {выражение_для_сортировки [COLLATE имя_сопоставления] [ASC | DESC]} [, …]


Ключевые слова

ORDER BY

Указывается, в каком порядке будут отсортированы возвращаемые строки запроса. Не следует ожидать, что данные будут отсортированы, если вы опустите предложение ORDER BY, даже если при этом вы указали предложение GROUP BY, и кажется, что сортировка была проведена.

выражение _для_сортировки

Указывается тот элемент запроса, который будет определять порядок расположения данных в результирующем наборе. Можно задать несколько выражений для сортировки. Обычно они представляют собой имена или псевдонимы столбцов из запроса, но это могут быть также такие выражения. Стандарт SQL92 позволял использовать порядковое расположение выражений для сортировки. Эта функциональность больше не употребляется, и ее не следует использовать в запросах SQL 2003.

COLLATE имя сопоставления

Подменяется заданное по умолчанию сопоставление для выражения_для сортировки и для предложения ORDER BY используется сопоставление с именем имя сопоставления.

[ASC | DESC]

Указывается, что выражение_для_сортировки должно возвращаться в восходящем (ASC) или нисходящем (DESC порядке.


Общие правила

В предложении ORDER BY столбцы должны быть перечислены в том порядке, в котором они упоминаются в списке элементов инструкции SELECT, желательно с использованием псевдонимов, если они есть. Пример:

SELECT
aujname AS first_name,
au_lname AS last_name
FROM authors
ORDER BY first_name, last_name;

В предложении ORDER BY используется порядок сортировки от главного к второстепенному. Это означает, что результирующий набор сначала сортируется по первому из указанных столбцов, затем одинаковые значения первого столбца сортируются по второму столбцу, одинаковые значения второго столбца — по третьему столбцу, и так далее

Индивидуальные параметры сортировки столбцов — COLLATE и ASC/DESC — не зависят от других столбцов предложения ORDER BY. Таким образом, вы можете отсортировать результирующий набор по одному столбцу по возрастанию, затем перейти к следующему столбцу и отсортировать набор по убыванию.

SELECT
au_fname AS first_name,
au_lname AS last_name
FROM authors
ORDER BY au_lname ASC, au_fname DESC;

Пустые значения (NULL) при сортировке всегда оказываются рядом (то есть считаются одинаковыми). В зависимости от платформы пустые значения могут собираться вверху или внизу результирующего набора. Следующий запрос для SQL Server:

SELECT title, price
FROM titles
ORDER BY price, title

выдаст следующий результирующий набор (отредактирован для краткости).

При помощи ключевых слов ASC и DESC можно помещать пустые значения вверху или внизу результирующего набора. Конечно, все непустые значения также будут располагаться по возрастанию или по убыванию.

В стандарте ANSI для предложения ORDER BY также поддерживается использование в выражении_для сортировки столбцов, которые не упоминаются в списке элементов инструкции SELECT. Например, в SQL 2003 следующий запрос является допустимым.

SELECT title, price
FROM titles
ORDER BY title_id

В приведенном примере можно видеть, что, хотя в запросе не выбирается столбец title_id, этот столбец является главным в выражении_для_сортировки. Результирующий набор возвращается отсортированным по title_id, даже если этот столбец не входит в набор.

Источник