ORDER BY-Klausel in Azure Cosmos DB

GILT FÜR: SQL-API

Die optionale ORDER BY-Klausel gibt die Sortierreihenfolge für die von der Abfrage zurückgegebenen Ergebnisse an.

Syntax

ORDER BY <sort_specification>  
<sort_specification> ::= <sort_expression> [, <sort_expression>]  
<sort_expression> ::= {<scalar_expression> [ASC | DESC]} [ ,...n ]  

Argumente

  • <sort_specification>

    Gibt eine Eigenschaft oder einen Ausdruck an, wonach das Resultset der Abfrage sortiert werden soll. Eine Sortierspalte kann als Name oder Eigenschaftenalias angegeben werden.

    Mehrere Eigenschaften können angegeben werden. Namen von Eigenschaften müssen eindeutig sein. Die Sequenz der Sortiereigenschaften in der ORDER BY-Klausel definiert die Anordnung des sortierten Resultsets. Dies bedeutet: Das Resultset wird nach der ersten Eigenschaft sortiert, und dann wird diese sortierte Liste nach der zweiten Eigenschaft sortiert usw.

    Die Eigenschaftennamen, auf die in der ORDER BY-Klausel verwiesen wird, müssen entweder einer Eigenschaft in der Auswahlliste oder einer Eigenschaft entsprechen, die in der Sammlung definiert ist, die in der FROM-Klausel eindeutig angegeben ist.

  • <sort_expression>

    Hiermit wird mindestens eine Eigenschaft oder ein Ausdruck festgelegt, nach dem die Abfrageergebnisse sortiert werden.

  • <scalar_expression>

    Weitere Informationen finden Sie im Abschnitt Skalarausdrücke.

  • ASC | DESC

    Gibt an, dass die Werte in der angegebenen Spalte in aufsteigender oder absteigender Reihenfolge sortiert werden sollen. ASC sortiert vom niedrigsten Wert zum höchsten Wert. DESC sortiert vom höchsten Wert zum niedrigsten Wert. ASC ist die Standardsortierreihenfolge. NULL-Werte werden als die niedrigsten Werte behandelt, die möglich sind.

Bemerkungen

Die ORDER BY-Klausel erfordert, dass die Indizierungsrichtlinie einen Index für die Felder enthält, die sortiert werden. Die Abfragelaufzeit von Azure Cosmos DB unterstützt die Sortierung für einen Eigenschaftennamen und nicht für berechnete Eigenschaften. Azure Cosmos DB unterstützt mehrere ORDER BY-Eigenschaften. Zum Ausführen einer Abfrage mit mehreren ORDER BY-Eigenschaften sollten Sie einen zusammengesetzten Index für die Felder definieren, die sortiert werden.

Hinweis

Wenn die Eigenschaften, die sortiert werden, für einige Dokumente möglicherweise nicht definiert sind und Sie diese mit einer ORDER BY-Abfrage abrufen möchten, müssen Sie diesen Pfad explizit in den Index aufnehmen. Die Standardindizierungsrichtlinie lässt das Abrufen der Dokumente, in denen die Sortierungseigenschaft nicht definiert ist, nicht zu. Überprüfen Sie Beispielabfragen für Dokumente mit fehlenden Feldern.

Beispiele

Hier sehen Sie beispielsweise eine Abfrage, mit der Familien sortiert nach dem Namen des Wohnorts in aufsteigender Reihenfolge abgerufen werden:

    SELECT f.id, f.address.city
    FROM Families f
    ORDER BY f.address.city

Die Ergebnisse sind:

    [
      {
        "id": "WakefieldFamily",
        "city": "NY"
      },
      {
        "id": "AndersenFamily",
        "city": "Seattle"
      }
    ]

Mit der folgenden Abfrage wird die id von Familien in der Reihenfolge abgerufen, in der das Element erstellt wurde. Das Element creationDate ist eine Zahl, die die Epoche repräsentiert, also die seit dem 1. Januar 1970 verstrichene Zeit in Sekunden.

    SELECT f.id, f.creationDate
    FROM Families f
    ORDER BY f.creationDate DESC

Die Ergebnisse sind:

    [
      {
        "id": "AndersenFamily",
        "creationDate": 1431620472
      },
      {
        "id": "WakefieldFamily",
        "creationDate": 1431620462
      }
    ]

Darüber hinaus können Sie nach mehreren Eigenschaften sortieren. Eine Abfrage, die nach mehreren Eigenschaften sortiert, erfordert einen zusammengesetzten Index. Betrachten Sie die folgende Abfrage:

    SELECT f.id, f.creationDate
    FROM Families f
    ORDER BY f.address.city ASC, f.creationDate DESC

Diese Abfrage ruft die id der Familien in aufsteigender Reihenfolge nach dem Namen der Stadt ab. Wenn mehrere Elemente den gleichen Ort aufweisen, sortiert die Abfrage in absteigender Reihenfolge nach dem creationDate.

Dokumente mit fehlenden Feldern

Abfragen mit ORDER BY geben alle Elemente zurück, u. a. Elemente, bei denen die Eigenschaft in der ORDER BY-Klausel nicht definiert ist.

Wenn Sie beispielsweise die nachstehende Abfrage ausführen, die lastName in der Order By-Klausel enthält, enthalten die Ergebnisse alle Elemente, auch diejenigen, für die keine lastName-Eigenschaft definiert ist.

    SELECT f.id, f.lastName
    FROM Families f
    ORDER BY f.lastName

Hinweis

Nur das .NET SDK 3.4.0 oder höher und das Java SDK 4.13.0 oder höher unterstützen ORDER BY-Klauseln mit gemischten Typen. Wenn Sie also nach einer Kombination aus nicht definierten und definierten Werten sortieren möchten, sollten Sie diese Version (oder höher) verwenden.

Sie können nicht steuern, in welcher Reihenfolge verschiedene Typen in den Ergebnissen angezeigt werden. Im obigen Beispiel wurde gezeigt, wie nicht definierte Werte vor Zeichenfolgenwerten sortiert wurden. Wenn Sie z. B. eine bessere Kontrolle über die Sortierreihenfolge von nicht definierten Werten möchten, können Sie allen nicht definierten Eigenschaften den Zeichenfolgenwert "aaaaaaaaa" oder "zzzzzzzz" zuweisen, um sicherzustellen, dass sie entweder an erster oder letzter Stelle stehen.

Nächste Schritte