ORDER BY (Entity SQL)

Określa kolejność sortowania używaną dla obiektów zwracanych w instrukcji SELECT.

Składnia

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

Argumenty

order_by_expression Dowolne prawidłowe wyrażenie zapytania określające właściwość, na której ma być sortowane. Można określić wiele wyrażeń sortowania. Sekwencja wyrażeń sortowania w klauzuli ORDER BY definiuje organizację posortowanego zestawu wyników.

COLLATE {collation_name} Określa, że operację ORDER BY należy wykonać zgodnie z sortowaniem określonym w elemencie collation_name. Funkcja COLLATE ma zastosowanie tylko dla wyrażeń ciągu.

AsC Określa, że wartości w określonej właściwości powinny być sortowane w kolejności rosnącej, od najniższej wartości do najwyższej wartości. Jest to opcja domyślna.

DESC Określa, że wartości w określonej właściwości powinny być sortowane w kolejności malejącej, od najwyższej wartości do najniższej wartości.

Wybierz n tylko pierwsze n elementy.

Pomiń n pierwsze n elementy.

Uwagi

Klauzula ORDER BY jest logicznie stosowana do wyniku klauzuli SELECT. Klauzula ORDER BY może odwoływać się do elementów na liście wyboru przy użyciu ich aliasów. Klauzula ORDER BY może również odwoływać się do innych zmiennych, które są obecnie w zakresie. Jeśli jednak klauzula SELECT została określona z modyfikatorem DISTINCT, klauzula ORDER BY może odwoływać się tylko do aliasów z klauzuli SELECT.

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

Każde wyrażenie w klauzuli ORDER BY musi obliczyć jakiś typ, który można porównać pod kątem uporządkowanej nierówności (mniejszej lub większej niż itd.). Te typy są zazwyczaj typami pierwotnymi skalarnych, takimi jak liczby, ciągi i daty. Typy wierszy porównywalnych typów są również porównywalne z kolejnością.

Jeśli kod wykonuje iterację w uporządkowanym zestawie, innym niż w przypadku projekcji najwyższego poziomu, dane wyjściowe nie mają gwarancji zachowania kolejności.

W poniższym przykładzie gwarantowana jest kolejność zachowania:

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

W poniższym zapytaniu kolejność zagnieżdżonego zapytania jest ignorowana:

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

Aby mieć uporządkowaną operację UNION, UNION ALL, EXCEPT lub INTERSECT, użyj następującego wzorca:

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

Słowa kluczowe z ograniczeniami

Następujące słowa kluczowe muszą być ujęte w cudzysłów, gdy są używane w klauzuli ORDER BY :

  • KRZYŻ

  • PEŁNE

  • KEY

  • LEFT

  • ZAMÓWIENIA

  • ZEWNĘTRZNE

  • RIGHT

  • ROW

  • VALUE

Porządkowanie zagnieżdżonych zapytań

W programie Entity Framework wyrażenie zagnieżdżone można umieścić w dowolnym miejscu w zapytaniu; kolejność zagnieżdżonego zapytania nie jest zachowywana.

Następujące zapytanie spowoduje uporządkowanie wyników według nazwiska:

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

W poniższym zapytaniu kolejność zagnieżdżonego zapytania jest ignorowana:

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

Przykład

Następujące zapytanie Entity SQL używa operatora ORDER BY do określenia kolejności sortowania używanej dla obiektów zwróconych w instrukcji SELECT. Zapytanie jest oparte na modelu AdventureWorks Sales. Aby skompilować i uruchomić to zapytanie, wykonaj następujące kroki:

  1. Postępuj zgodnie z procedurą w temacie Instrukcje: wykonywanie zapytania zwracającego wyniki StructuralType.

  2. Przekaż następujące zapytanie jako argument do ExecuteStructuralTypeQuery metody :

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

Zobacz też