ORDER BY-Klausel

Gilt für:durch Häkchen mit „Ja“ markiert Databricks SQL durch Häkchen mit „Ja“ markiert Databricks Runtime

Gibt die Ergebniszeilen sortiert in der vom Benutzer angegebenen Reihenfolge zurück. Im Gegensatz zur SORT BY-Klausel garantiert diese Klausel eine Gesamtreihenfolge in der Ausgabe.

Syntax

ORDER BY { { ALL [ sort_direction] [ nulls_sort_oder ] } |
           { expression [ sort_direction ] [ nulls_sort_oder ] } [, ...] }

sort_direction
  [ ASC | DESC ]

nulls_sort_order
  [ NULLS FIRST | NULLS LAST ]

Parameter

  • ALL

    Gilt für:Häkchen ja Databricks SQL Häkchen gesetzt ja Databricks Runtime 12.2 LTS und höher

    Eine kürzere Möglichkeit, um alle Ausdrücke in der Liste SELECT in der Reihenfolge anzugeben, in der sie vorkommen. Wenn sort_direction oder nulls_sort_order angegeben wird, gilt dies für jeden Ausdruck.

  • expression

    Ausdruck eines beliebigen Typs, der zum Festlegen einer Reihenfolge verwendet wird, in der die Ergebnisse zurückgegeben werden.

    Wenn der Ausdruck ein INT-Literal ist, wird er als Spaltenposition in der Auswahlliste interpretiert.

  • sort_direction

    Gibt die Sortierreihenfolge für die Sortierung nach Ausdruck an.

    • ASC: Die Sortierrichtung für diesen Ausdruck ist „aufsteigend“.
    • DESC: Die Sortierrichtung für diesen Ausdruck ist „absteigend“.

    Wird die Sortierrichtung nicht explizit angegeben, werden Zeilen standardmäßig aufsteigend sortiert.

  • nulls_sort_order

    Gibt optional an, ob NULL-Werte vor/nach Nicht-NULL-Werten zurückgegeben werden. Wird null_sort_order nicht angegeben, werden NULL-Werte bei der Sortierreihenfolge ASC zuerst und bei der Sortierreihenfolge DESC zuletzt aufgeführt.

    • NULLS FIRST: NULL-Werte werden unabhängig von der Sortierreihenfolge zuerst zurückgegeben.
    • NULLS LAST: NULL-Werte werden unabhängig von der Sortierreihenfolge zuletzt zurückgegeben.

Wenn Sie mehr als einen Ausdruck angeben, erfolgt die Sortierung von links nach rechts. Alle Zeilen werden nach dem ersten Ausdruck sortiert. Wenn für den ersten Ausdruck doppelte Werte vorhanden sind, wird der zweite Ausdruck verwendet, um die Reihenfolge innerhalb der Gruppe von Duplikaten usw. zu bestimmen. Die resultierende Reihenfolge ist nicht deterministisch, wenn in der gesamten Sortierung nach Ausdrücken doppelte Werte vorhanden sind.

Beispiele

> CREATE TABLE person (id INT, name STRING, age INT);
> INSERT INTO person VALUES
    (100, 'John' , 30),
    (200, 'Mary' , NULL),
    (300, 'Mike' , 80),
    (400, 'Jerry', NULL),
    (500, 'Dan'  ,  50);

-- Sort rows by age. By default rows are sorted in ascending manner with NULL FIRST.
> SELECT name, age FROM person ORDER BY age;
 Jerry NULL
  Mary NULL
  John   30
   Dan   50
  Mike   80

-- Sort rows in ascending manner keeping null values to be last.
> SELECT name, age FROM person ORDER BY age NULLS LAST;
  John   30
   Dan   50
  Mike   80
  Mary NULL
 Jerry NULL

-- Sort rows by age in descending manner, which defaults to NULL LAST.
> SELECT name, age FROM person ORDER BY age DESC;
  Mike   80
   Dan   50
  John   30
 Jerry NULL
  Mary NULL

-- Sort rows in ascending manner keeping null values to be first.
> SELECT name, age FROM person ORDER BY age DESC NULLS FIRST;
 Jerry NULL
  Mary NULL
  Mike   80
   Dan   50
  John   30

-- Sort rows based on more than one column with each column having different
-- sort direction.
> SELECT * FROM person ORDER BY name ASC, age DESC;
 500    Dan   50
 400  Jerry NULL
 100   John   30
 200   Mary NULL
 300   Mike   80

-- Sort rows based on all columns in the select list
> SELECT * FROM person ORDER BY ALL ASC;
 100   John   30
 200   Mary NULL
 300   Mike   80
 400  Jerry NULL
 500    Dan   50