Clause ORDER BY

Retourne les lignes de résultats de manière triée dans l’ordre spécifié par l’utilisateur. Contrairement à la clause sort by , cette clause garantit un classement total dans la sortie.

Syntaxe

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

Paramètres

  • ORDER BY

    Liste d’expressions séparées par des virgules avec des paramètres facultatifs sort_direction et nulls_sort_order utilisées pour trier les lignes.

  • sort_direction

    Spécifie éventuellement si les lignes doivent être triées dans l’ordre croissant ou décroissant. Les valeurs valides pour le sens du tri sont ASC pour l’ordre croissant et pour l’ordre DESC décroissant. Si le sens de tri n’est pas spécifié explicitement, les lignes par défaut sont triées par ordre croissant.

    Stockéesyntaxe

  • nulls_sort_order

    Spécifie éventuellement si les valeurs NULL sont retournées avant/après les valeurs non NULL. Si null_sort_order n’est pas spécifié, les valeurs NULL sont triées en premier si l’ordre de tri est ASC et les valeurs NULL sont triées en dernier si l’ordre de tri est DESC .

    1. Si NULLS FIRST est spécifié, les valeurs NULL sont retournées en premier, quel que soit l’ordre de tri.
    2. Si NULLS LAST est spécifié, les valeurs NULL sont retournées en dernier, quel que soit l’ordre de tri.

    Stockéesyntaxe

Exemples

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|
+---+-----+----+