ORDER BY (Entity SQL)

Legt die Sortierreihenfolge für Objekte fest, die von einer SELECT-Anweisung zurückgegeben werden.

Syntax

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

Argumente

order_by_expression: Ein gültiger Abfrageausdruck, der eine Eigenschaft angibt, nach der sortiert werden soll. Es können mehrere Sortierausdrücke angegeben werden. Die Reihenfolge der Sortierausdrücke in der ORDER BY-Klausel definiert den Aufbau des sortierten Resultsets.

COLLATE {collation_name}: Gibt an, dass der ORDER BY-Vorgang nach der in collation_name angegebenen Sortierreihenfolge ausgeführt werden soll. COLLATE ist nur für Zeichenfolgenausdrücke anwendbar.

ASC: Gibt an, dass die Werte der angegebenen Eigenschaft in aufsteigender Reihenfolge (vom kleinsten zum größten Wert) sortiert werden sollen. Dies ist die Standardeinstellung.

DESC: Gibt an, dass die Werte der angegebenen Eigenschaft in absteigender Reihenfolge (vom größten zum kleinsten Wert) sortiert werden sollen.

LIMIT n: Nur die ersten n-Elemente werden ausgewählt.

SKIP n: Überspringt die ersten n-Elemente.

Bemerkungen

Die ORDER BY-Klausel wird logisch auf das Ergebnis der SELECT-Klausel angewendet. In der ORDER BY-Klausel kann auf Elemente in der Auswahlliste verwiesen werden, indem deren Aliase verwendet werden. Die ORDER BY-Klausel kann auch auf andere Variablen verweisen, die sich aktuell im Gültigkeitsbereich befinden. Wenn die SELECT-Klausel jedoch mit einem DISTINCT-Modifizierer angegeben wurde, kann von der ORDER BY-Klausel nur auf Aliase der SELECT-Klausel verwiesen werden.

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

Jeder Ausdruck in der ORDER BY-Klausel muss zu einem Typ ausgewertet werden, der bzgl. geordneter Ungleichheit ("kleiner als", "größer als" usw.) verglichen werden kann. Bei diesen Typen handelt es sich im Allgemeinen um skalare primitive Typen wie Zahlen, Zeichenfolgen und Datumsangaben. "RowTypes" vergleichbarer Typen sind ebenfalls in der Reihenfolge vergleichbar.

Wenn Code eine geordnete Menge durchläuft, wird, anders als bei einer Projektion in der obersten Ebene, die Reihenfolge bei der Ausgabe möglicherweise nicht erhalten.

Im folgenden Beispiel wird sichergestellt, dass die Reihenfolge beibehalten wird:

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

In der folgenden Abfrage wird die Reihenfolge der geschachtelten Abfrage ignoriert:

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

Verwenden Sie folgendes Muster, um eine geordnete UNION, UNION ALL, EXCEPT oder INTERSECT-Operation durchzuführen:

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

Eingeschränkte Schlüsselwörter

Die folgenden Schlüsselwörter müssen bei der Verwendung in einer ORDER BY -Klausel in Anführungszeichen gesetzt werden:

  • CROSS

  • FULL

  • KEY

  • LEFT

  • ORDER

  • OUTER

  • RIGHT

  • ROW

  • VALUE

Reihenfolge geschachtelter Abfragen

In Entity Framework kann ein geschachtelter Ausdruck an jeder Stelle in der Abfrage verwendet werden. Die Reihenfolge einer geschachtelten Abfrage wird nicht beibehalten.

Die folgende Abfrage sortiert die Ergebnisse nach dem Nachnamen:

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

In der folgenden Abfrage wird die Reihenfolge der geschachtelten Abfrage ignoriert:

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

Beispiel

In der folgenden Entity SQL-Abfrage wird der ORDER BY-Operator verwendet, um für die von der SELECT-Anweisung zurückgegebenen Objekte die zu verwendende Sortierreihenfolge anzugeben. Diese Abfrage beruht auf dem "AdventureWorks Sales"-Modell. Führen Sie folgende Schritte aus, um diese Abfrage zu kompilieren und auszuführen:

  1. Verwenden Sie das Verfahren unter How to: Execute a Query that Returns StructuralType Results.

  2. Übergeben Sie die folgende Abfrage als Argument an die ExecuteStructuralTypeQuery -Methode:

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

Siehe auch