ORDER BY-KlauselORDER BY clause

Gibt die Ergebniszeilen auf sortierte Weise in der vom Benutzer angegebenen Reihenfolge zurück.Returns the result rows in a sorted manner in the user specified order. Anders als bei der Sort by -Klausel gewährleistet diese Klausel eine Gesamt Reihenfolge in der Ausgabe.Unlike the SORT BY clause, this clause guarantees a total order in the output.

SyntaxSyntax

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

ParameterParameters

  • ORDER BYORDER BY

    Eine durch Trennzeichen getrennte Liste von Ausdrücken zusammen mit optionalen Parametern sort_direction und nulls_sort_order , die zum Sortieren der Zeilen verwendet werden.A comma-separated list of expressions along with optional parameters sort_direction and nulls_sort_order which are used to sort the rows.

  • sort_directionsort_direction

    Gibt optional an, ob die Zeilen in aufsteigender oder absteigender Reihenfolge sortiert werden sollen.Optionally specifies whether to sort the rows in ascending or descending order. Die gültigen Werte für die Sortierrichtung sind ASC Aufsteigend und DESC Absteigend.The valid values for the sort direction are ASC for ascending and DESC for descending. Wenn die Sortierrichtung nicht explizit angegeben wird, werden die Zeilen standardmäßig aufsteigend sortiert.If sort direction is not explicitly specified, then by default rows are sorted ascending.

    Syntax:[ ASC | DESC ]Syntax: [ ASC | DESC ]

  • nulls_sort_ordernulls_sort_order

    Gibt optional an, ob NULL-Werte vor/hinter Werten zurückgegeben werden, die nicht NULL sind.Optionally specifies whether NULL values are returned before/after non-NULL values. Wenn null_sort_order nicht angegeben ist, werden NULLS zuerst sortiert, wenn die Sortierreihenfolge ist, ASC und NULL-Werten sortieren, wenn die Sortierreihenfolge ist DESC .If null_sort_order is not specified, then NULLs sort first if sort order is ASC and NULLS sort last if sort order is DESC.

    1. Wenn NULLS FIRST angegeben wird, werden zuerst NULL-Werte unabhängig von der Sortierreihenfolge zurückgegeben.If NULLS FIRST is specified, then NULL values are returned first regardless of the sort order.
    2. Wenn NULLS LAST angegeben wird, werden NULL-Werte unabhängig von der Sortierreihenfolge zurückgegeben.If NULLS LAST is specified, then NULL values are returned last regardless of the sort order.

    Syntax:[ NULLS { FIRST | LAST } ]Syntax: [ NULLS { FIRST | LAST } ]

BeispieleExamples

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;
+-----+----+
| name| 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;
+-----+----+
| name| age|
+-----+----+
| 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;
+-----+----+
| name| age|
+-----+----+
| 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;
+-----+----+
| name| age|
+-----+----+
|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;
+---+-----+----+
| id| name| age|
+---+-----+----+
|500|  Dan|  50|
|400|Jerry|null|
|100| John|  30|
|200| Mary|null|
|300| Mike|  80|
+---+-----+----+