ORDER BY
ORDER BY trie le résultat final, croissant par défaut (ASC) ou décroissant (DESC). Plusieurs colonnes servent à départager les ex æquo, par exemple le prix puis le nom.
- trier
- tri
- ASC
- DESC
- NULLS FIRST
- NULLS LAST
Syntaxe
SELECT colonnesFROM tableORDER BY colonne1 [ASC|DESC] [NULLS FIRST|NULLS LAST], colonne2 ...;Exemple
SELECT name, category, priceFROM productsORDER BY category ASC, price DESC;-- Jeu de données : boutique-- Résultat attendu :-- Casque audio | Audio | 149.99-- Enceinte Bluetooth | Audio | 79.99-- Clavier mécanique | Informatique | 89.99-- Webcam HD | Informatique | 59.99-- Souris sans fil | Informatique | 29.99À retenir
- Chaque colonne a son propre sens de tri : ORDER BY category, price DESC trie les catégories en croissant et, à l'intérieur, les prix en décroissant.
- ORDER BY peut utiliser un alias du SELECT (ORDER BY prix_ttc), car il est évalué après SELECT. Le tri par numéro de colonne (ORDER BY 2) fonctionne mais casse dès qu'on réordonne le SELECT.
- Piège : la place de NULL dépend du SGBD. SQLite, MySQL et SQL Server le mettent en premier en ASC, PostgreSQL et Oracle en dernier. Imposez-la avec NULLS FIRST ou NULLS LAST (SQLite 3.30+, PostgreSQL, Oracle) : ORDER BY teacher_id NULLS LAST.
- Piège : SQLite trie le texte octet par octet. Les lettres accentuées passent après le z (« Léa » après « Lucas ») et « 10 » passe avant « 9 » si la colonne contient du texte. Triez les nombres stockés en texte avec CAST(col AS INTEGER).
Voir aussi
- SELECTSELECT est la question posée à la base : quelles colonnes afficher et depuis quelle table (FROM). C'est le point de départ de toute requête de lecture, du simple listing au rapport.
- LIMIT / OFFSETLIMIT garde les n premières lignes du résultat trié, OFFSET en saute m avant de commencer. C'est l'outil des classements (top 3) et de la pagination d'une liste dans une application.
- Ordre logique d'exécutionUne requête ne s'évalue pas dans l'ordre où on l'écrit : FROM vient d'abord, SELECT presque à la fin. Connaître cet ordre explique la plupart des erreurs d'alias et d'agrégats.