ORDER BY : donner un ordre à votre résultat
Même avec un bon filtre, vos données peuvent sortir “dans n’importe quel ordre”.
En SQL, si vous ne demandez pas un tri, la base peut renvoyer les lignes dans un ordre non garanti.
ORDER BY vous permet de choisir un ordre logique et utile.
Vous avez des fiches (lignes). Vous pouvez les trier par nom, par date, ou par note.
ORDER BY, c’est le “tri” de votre classeur.
ORDER BY ordonne les lignes du résultat selon une ou plusieurs colonnes.
Par défaut, le tri est ASC (croissant).
Où placer ORDER BY dans une requête ?
La structure classique :
SELECT colonnes
FROM table
WHERE condition
ORDER BY colonne1 [ASC|DESC];
SELECT (quoi) → FROM (où) → WHERE (filtrer) → ORDER BY (trier).
ASC et DESC : croissant ou décroissant
⬆️
ASC (par défaut)
Ordre croissant (A → Z, 0 → 9, ancien → récent selon la colonne).
SELECT titre, auteur
FROM livres
ORDER BY titre ASC;
⬇️
DESC
Ordre décroissant (Z → A, 9 → 0, récent → ancien).
SELECT titre, annee
FROM films
ORDER BY annee DESC;
⭐
Cas typique : “meilleurs d’abord”
Pour afficher les meilleures notes en premier :
SELECT titre, note
FROM films
ORDER BY note DESC;
🧠
À retenir
Si vous n’écrivez rien, c’est ASC.
Écrivez DESC quand vous voulez “le plus grand / le plus récent” en premier.
Trier sur plusieurs colonnes : tri principal + tri secondaire
Très utile quand plusieurs lignes ont la même valeur sur une colonne.
Vous donnez un tri “principal”, puis un tri “secondaire”.
SELECT auteur, titre
FROM livres
ORDER BY auteur ASC, titre ASC;
SELECT titre, note, annee
FROM films
ORDER BY note DESC, annee DESC;
“Je trie d’abord par note. Si deux films ont la même note, je trie ces deux films
par année.”
Trier par une colonne calculée ou un alias
Si vous avez une expression ou un alias dans SELECT, vous pouvez souvent l’utiliser dans ORDER BY.
Cela dépend du SGBD, mais c’est très courant (SQLite, MySQL, etc.).
SELECT titre, note, note * 10 AS note_sur_100
FROM films
ORDER BY note_sur_100 DESC;
Si votre outil SQL refuse l’alias, réécrivez l’expression directement dans ORDER BY :
ORDER BY note * 10 DESC. C’est plus universel.
Et si certaines valeurs sont NULL ?
Les valeurs NULL peuvent apparaître en haut ou en bas selon le SGBD.
L’important pour débuter : retenir que NULL se comporte “à part”.
SELECT nom, email
FROM clients
ORDER BY email ASC;
Si les NULL vous gênent, filtrez-les avant :
WHERE email IS NOT NULL.
Guide pas à pas : trier des listes comme sur un vrai site
1
Lister les livres par ordre alphabétique
SELECT titre, auteur
FROM livres
ORDER BY titre ASC;
Résultat : un listing “propre”, comme un catalogue.
2
Lister les films du plus récent au plus ancien
SELECT titre, annee
FROM films
ORDER BY annee DESC;
Résultat : “les nouveautés d’abord”.
3
Top films : note décroissante, et année pour départager
SELECT titre, note, annee
FROM films
ORDER BY note DESC, annee DESC;
Résultat : le classement le plus “logique”.
Beaucoup d’écrans d’applications sont “SELECT + WHERE + ORDER BY”.
Vous êtes en train de construire une base très solide.
Erreurs courantes avec ORDER BY
❌
“no such column” dans ORDER BY
Cause : faute de frappe, ou alias non reconnu.
Solution : vérifiez le nom exact, ou réécrivez l’expression.
❌
Résultat “bizarre” sur du texte
Cause : accents/maj/min, collations, valeurs NULL.
Solution : pour débuter, observez et testez. On approfondira plus tard si besoin.
❌
Oublier DESC
Cause : par défaut c’est ASC, donc les “meilleurs” ne sortent pas en premier.
Solution : écrire explicitement DESC quand on veut un classement.
Exercice pratique : 6 tris “comme en entreprise”
Choisissez la table films ou livres selon ce que vous avez dans votre base.
1) Films : du plus récent au plus ancien
SELECT titre, annee FROM films
ORDER BY annee DESC;
2) Films : meilleurs notés d’abord
SELECT titre, note FROM films
ORDER BY note DESC;
3) Films : note puis année (départage)
SELECT titre, note, annee FROM films
ORDER BY note DESC, annee DESC;
4) Livres : par auteur puis titre
SELECT auteur, titre FROM livres
ORDER BY auteur ASC, titre ASC;
5) Livres : plus gros livres d’abord (pages)
SELECT titre, pages FROM livres
ORDER BY pages DESC;
Bonus : tri + filtre
Films après 2010, triés par note décroissante.
SELECT titre, annee, note FROM films
WHERE annee > 2010
ORDER BY note DESC;
Si votre tri ne change rien, c’est souvent parce que vos données sont déjà “presque triées”.
Ajoutez une nouvelle ligne (chapitre 8) avec une valeur différente et retestez.
Récapitulatif du chapitre
- Trier un résultat avec ORDER BY
- Utiliser ASC (croissant) et DESC (décroissant)
- Faire un tri multi-colonnes (tri principal + secondaire)
- Trier sur une expression / un alias (selon le SGBD)
- Comprendre que NULL peut influencer l’ordre
Prochain chapitre : vous apprendrez à limiter le nombre de résultats avec LIMIT
(très utile pour la pagination et les “Top 10”).