Поделиться через


Предложение ORDER BY (SQL Server Compact)

Указывает порядок сортировки для результирующего набора. Предложение ORDER BY недопустимо во вложенных запросах. Также можно выбрать только окно или страницу результатов из результирующего набора с помощью предложения OFFSET-FETCH.

Синтаксис

[ORDER BY { order_by_expression [ ASC | DESC ] } [ ,...n][<offset_fetch>] ] 

<offset_fetch> ::= {OFFSET { integer_constant | offset_row_count_expression } { ROW | ROWS }    [FETCH { FIRST | NEXT } {integer_constant | fetch_row_count_expression } { ROW | ROWS } ONLY    ]}

Аргументы

  • order_by_expression
    Указывает столбец, который нужно отсортировать. Столбец для сортировки можно указать по имени или псевдониму, которые могут быть уточнены именем таблицы или выражением. Можно указать несколько столбцов для сортировки. Последовательность столбцов для сортировки в предложении ORDER BY определяет организацию результирующего набора.

    Предложение ORDER BY может включать элементы, не видимые в списке выбора.

    Примечание

    Столбцы данных типа ntext и image нельзя использовать в предложении ORDER BY.

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

  • DESC
    Указывает, что значения в указанном столбце должны сортироваться по убыванию, от больших значений к меньшим. Значения NULL рассматриваются как минимально возможные значения.

  • OFFSET { integer_constant | offset_row_count_expression } { ROW | ROWS }
    Задает количество строк, которые нужно пропустить, прежде чем начать возвращать строки из выражения запроса. Аргументом предложения OFFSET может быть целое число или выражение, которое больше нуля или равно нулю. ROW и ROWS можно использовать попеременно.

  • FETCH {FIRST|NEXT} <выражение подсчета строк> {ROW|ROWS} ONLY
    Задает количество строк, которые нужно вернуть, после обработки предложения OFFSET. Аргументом предложения FETCH может быть целое число или выражение, которое больше единицы или равно единице. ROW и ROWS можно использовать попеременно. Аналогично FIRST и NEXT можно использовать попеременно.

Замечания

В предложении ORDER BY нет ограничения по числу элементов.

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

Данная инструкция успешно выполняется, поскольку имя «col1» принадлежит первой таблице (t1).

Create t1 (col1 int, col2 int);

Create t2 (col3 int, col4 int);

SELECT * from t1 UNION SELECT * from t2 ORDER BY col1;

Данная инструкция дает сбой, поскольку имя «col3» не принадлежит первой таблице (t1).

SELECT * from t1 UNION SELECT * from t2 ORDER BY col3;

Пример

В следующем примере показано, как вывести список служащих, отсортированный по имени.

SELECT First Name + ' ' + Last Name FROM Employees ORDER BY First Name

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

SELECT First Name + ' ' + Last Name FROM Employees ORDER BY First Name OFFSET 10 ROWS;

См. также

Справочник

Предложение OFFSET FETCH (SQL Server Compact)