ORDER BY (NoSQL-Abfrage)

GILT FÜR: NoSQL

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

BESCHREIBUNG
<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> Ausdruck, der den zu berechnenden Wert darstellt.
ASC oder 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. Wenn dieses Argument nicht angegeben wird, ist ASC (aufsteigend) die Standardsortierreihenfolge. null-Werte werden als die niedrigsten möglichen Werte behandelt.

Hinweis

Weitere Informationen zu Skalarausdrücken finden Sie unter Skalarausdrücke.

Beispiele

Für die Beispiele in diesem Abschnitt wird dieser Verweissatz von Elementen verwendet. Jedes Element enthält eine name-Eigenschaft mit first- und last-Untereigenschaften.

[
  {
    "name": {
      "first": "Casey",
      "last": "Jensen"
    },
    "team": "Human resources"
  },
  {
    "name": {
      "first": "Amari",
      "last": "Rivera"
    },
    "team": "Human resources"
  },
  {
    "name": {
      "first": "Kayla",
      "last": "Lewis"
    },
    "team": "Human resources"
  }
]

In diesem ersten Beispiel wird die ORDER BY-Klausel verwendet, um ein Feld nach der Standardsortierreihenfolge (aufsteigend) zu sortieren.

SELECT VALUE {
    firstName: e.name.first,
    lastName: e.name.last
}
FROM
    employees e
ORDER BY
    e.name.last
[
  {
    "firstName": "Casey",
    "lastName": "Jensen"
  },
  {
    "firstName": "Kayla",
    "lastName": "Lewis"
  },
  {
    "firstName": "Amari",
    "lastName": "Rivera"
  }
]

In diesem nächsten Beispiel wird die Sortierreihenfolge explizit als „absteigend“ angegeben.

SELECT VALUE {
    firstName: e.name.first,
    lastName: e.name.last
}
FROM
    employees e
ORDER BY
    e.name.last DESC
[
  {
    "firstName": "Amari",
    "lastName": "Rivera"
  },
  {
    "firstName": "Kayla",
    "lastName": "Lewis"
  },
  {
    "firstName": "Casey",
    "lastName": "Jensen"
  }
]

In diesem letzten Beispiel werden die Elemente anhand von zwei Feldern sortiert – in einer bestimmten Reihenfolge mit explizit angegebener Sortierung. Eine Abfrage, die mithilfe von zwei oder mehr Feldern sortiert wird, erfordert einen zusammengesetzten Index.

SELECT VALUE {
    firstName: e.name.first,
    lastName: e.name.last
}
FROM
    employees e
ORDER BY
    e.name.last DESC,
    e.name.first ASC

Bemerkungen

  • Abfragen mit ORDER BY geben alle Elemente zurück – einschließlich Elementen, bei denen die Eigenschaft in der ORDER BY-Klausel nicht definiert wurde. Normalerweise können Sie nicht steuern, in welcher Reihenfolge undefined (nicht definierte) Typen in den Ergebnissen angezeigt werden. Zum Steuern der Sortierreihenfolge von nicht definierten Werten weisen Sie allen undefined-Eigenschaften einen beliebigen Wert zu, um sicherzustellen, dass sie entweder vor oder nach den definierten Werten sortiert werden.
  • Die ORDER BY-Klausel erfordert es, dass die Indizierungsrichtlinie einen Index für die Felder enthält, die sortiert werden. Die Abfragelaufzeit unterstützt die Sortierung nach einem Eigenschaftsnamen oder nach berechneten Eigenschaften. Die Laufzeit unterstützt auch mehrere ORDER BY-Eigenschaften. Definieren Sie zum Ausführen einer Abfrage mit mehreren ORDER BY-Eigenschaften einen zusammengesetzten Index für die Felder, die sortiert werden.
  • Wenn die Eigenschaften, die sortiert werden, bei einigen Elementen möglicherweise undefined (nicht definiert ) lauten und Sie sie mit einer ORDER BY-Abfrage abrufen möchten, müssen Sie diesen Pfad in den Index explizit einbeziehen. Die Standardindizierungsrichtlinie lässt das Abrufen der Elemente, in denen die Sortierungseigenschaft undefined lautet, nicht zu.