ORDER BY-sats
Returnerar resultat raderna på ett sorterat sätt i den angivna ordningen för användaren. Till skillnad från satsen sorts by garanterar denna sats en total ordning i utdata.
Syntax
ORDER BY { expression [ sort_direction | nulls_sort_oder ] [ , ... ] }
Parametrar
ORDER BY
En kommaavgränsad lista med uttryck tillsammans med valfria parametrar
sort_direction
ochnulls_sort_order
som används för att sortera raderna.sort_direction
Anger om raderna ska sorteras i stigande eller fallande ordning. De giltiga värdena för sorterings riktningen är
ASC
för stigande ochDESC
för fallande. Om sorterings riktningen inte uttryckligen anges, sorteras som standard rader stigande.Syntax:
[ ASC | DESC ]
nulls_sort_order
Anger om NULL-värden returneras före/efter värden som inte är NULL. Om
null_sort_order
inte anges, null sorteras först om sorterings ordningen ärASC
och null-sortering sist om sorterings ordningen ärDESC
.- Om
NULLS FIRST
har angetts returneras null-värden först oavsett sorterings ordningen. - Om
NULLS LAST
har angetts returneras null-värden sist oavsett sorterings ordningen.
Syntax:
[ NULLS { FIRST | LAST } ]
- Om
Exempel
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|
+---+-----+----+