ORDER BY (Entity SQL)

Указывает порядок сортировки для объектов, возвращаемых инструкцией SELECT.

Синтаксис

[ ORDER BY
   {
      order_by_expression [SKIP n] [LIMIT n]
      [ COLLATE collation_name ]
      [ ASC | DESC ]
   }
   [ ,…n ]
]

Аргументы

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

COLLATE {collation_name} Указывает, что операция ORDER BY должна выполняться в соответствии с параметрами сортировки, указанными в collation_name. COLLATE применяется только для строковых выражений.

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

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

Будут n выбраны только первые n элементы.

SKIP пропускает n первые n элементы.

Замечания

Предложение ORDER BY логически применяется к результату предложения SELECT. Предложение ORDER BY может ссылаться на элементы списка выбора по их псевдонимам. Предложение ORDER BY может также ссылаться на другие переменные, находящиеся в области видимости. Однако если предложение SELECT указано с модификатором DISTINCT, то предложение ORDER BY может ссылаться только на псевдонимы из предложения SELECT.

SELECT c AS c1 FROM cs AS c ORDER BY c1.e1, c.e2

Выражения в предложении ORDER BY должны иметь сравнимый тип, поскольку для упорядочивания производится сравнение элементов (меньше, больше и т. д.). Такими типами обычно являются скалярные примитивы - числа, строки и даты. Типы RowType для сравнимых типов также являются сравнимыми для упорядочивания.

Если код проходит по упорядоченному набору, отличному от проекции верхнего уровня, то сохранение порядка в выходных данных не гарантируется.

В следующем примере порядок гарантированно сохраняется:

SELECT C1.FirstName, C1.LastName
        FROM AdventureWorks.Contact as C1
        ORDER BY C1.LastName

В следующем запросе порядок вложенного запроса игнорируется:

SELECT C2.FirstName, C2.LastName
    FROM (SELECT C1.FirstName, C1.LastName
        FROM AdventureWorks.Contact as C1
        ORDER BY C1.LastName) as C2

Получить упорядоченный результат выполнения операции UNION, UNION ALL, EXCEPT или INTERSECT можно следующим образом.

SELECT ...
FROM ( UNION/EXCEPT/INTERSECT operation )
ORDER BY ...

Служебные ключевые слова

Следующие ключевые слова при использовании в предложении ORDER BY необходимо заключать в кавычки.

  • CROSS

  • FULL

  • КЛЮЧ

  • LEFT

  • ORDER

  • OUTER

  • RIGHT

  • ROW

  • ЗНАЧЕНИЕ

Упорядочение вложенных запросов

Платформа Entity Framework позволяет разместить вложенное выражение в любом месте запроса. Порядок вложенного запроса не сохраняется.

Следующий запрос упорядочит результаты по фамилии:

SELECT C1.FirstName, C1.LastName
        FROM AdventureWorks.Contact as C1
        ORDER BY C1.LastName

В следующем запросе порядок вложенного запроса игнорируется:

SELECT C2.FirstName, C2.LastName
    FROM (SELECT C1.FirstName, C1.LastName
        FROM AdventureWorks.Contact as C1
        ORDER BY C1.LastName) as C2

Пример

Следующий запрос Entity SQL использует оператор ORDER BY для указания порядка сортировки, используемого для объектов, возвращаемых в инструкции SELECT. Запрос основан на модели AdventureWorks Sales. Для компиляции и запуска этого запроса выполните следующие шаги.

  1. Выполните процедуру из статьи How to: Execute a Query that Returns StructuralType Results.

  2. Передайте следующий запрос в качестве аргумента методу ExecuteStructuralTypeQuery :

SELECT VALUE p FROM AdventureWorksEntities.Products 
    AS p ORDER BY p.ListPrice

См. также