Aller au contenu
Lecture (DQL)

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

Modèle
SELECT colonnesFROM tableORDER BY colonne1 [ASC|DESC] [NULLS FIRST|NULLS LAST], colonne2 ...;

Exemple

Exemple concret
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

  1. 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.
  2. 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.
  3. 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.
  4. 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