SQL Quest
Se connecter English 0 XP Niv. 1
Débutant

SQL ORDER BY : trier les résultats

4 min de lecture · 4 exemples exécutables · mis à jour le 9 octobre 2026

Sans instruction particulière, une base de données renvoie les lignes dans l'ordre qui l'arrange, et cet ordre peut changer d'une exécution à l'autre. Pour obtenir un classement fiable (du moins cher au plus cher, du plus récent au plus ancien, par ordre alphabétique), on ajoute ORDER BY.

Syntaxe

SELECT colonnes
FROM table
ORDER BY colonne1 [ASC|DESC], colonne2 [ASC|DESC];

Comment ça marche

  • ASC trie par ordre croissant (A → Z, 1 → 9, plus ancien → plus récent). C'est la valeur par défaut : on peut l'omettre.
  • DESC trie par ordre décroissant.
  • On peut trier sur plusieurs colonnes : la deuxième ne sert qu'à départager les lignes à égalité sur la première.

ORDER BY se place à la fin de la requête, après WHERE, GROUP BY et HAVING. Comme il est exécuté en dernier (juste avant LIMIT), il peut utiliser les alias définis dans le SELECT.

En SQLite, les valeurs NULL sont considérées comme les plus petites : elles apparaissent en premier en ordre croissant. On peut le changer avec NULLS LAST.

Schéma

produits
nomprix
Plaid25
Clavier49
Gourde12
résultat
nomprix
Clavier49
Plaid25
Gourde12
ORDER BY prix DESC : les lignes sont réordonnées du prix le plus élevé au plus bas.

Schéma simplifié pour illustrer le principe. Les exemples ci-dessous utilisent la vraie base d'exercices de SQL Quest (une boutique en ligne fictive : voir le schéma complet).

Exemples avec leurs résultats

1. Ordre croissant

Les produits du moins cher au plus cher.

SELECT nom, prix
FROM produits
ORDER BY prix
LIMIT 8;
Essayer dans le bac à sable
Résultat
nomprix
Miel bio3,7
Tapis de yoga6,53
Roman policier8,03
BD aventure9,98
Coussin10,86
Ballon de foot14,68
Clavier mécanique15
Vase céramique18,35

8 lignes au total

2. Ordre décroissant

Les commandes les plus récentes en premier.

SELECT id, date_commande, statut
FROM commandes
ORDER BY date_commande DESC
LIMIT 6;
Essayer dans le bac à sable
Résultat
iddate_commandestatut
4732025-12-28livrée
2942025-12-22livrée
2242025-12-20livrée
3712025-12-20expédiée
4172025-12-18en cours
5092025-12-18livrée

6 lignes au total

3. Trier sur plusieurs colonnes

Par département (A → Z), puis par salaire décroissant à l'intérieur de chaque département.

SELECT departement, prenom, nom, salaire
FROM employes
ORDER BY departement, salaire DESC
LIMIT 10;
Essayer dans le bac à sable
Résultat
departementprenomnomsalaire
DirectionChloéDubois9 500
ITNathanRoux6 800
ITClaraGarcia5 100
ITInèsMoreau4 500
ITChloéBlanc3 800
ITInèsFaure3 600
RHLouisChevalier5 300
RHChloéBenali4 900
RHSamirSimon4 800
RHChloéRoux3 600

10 lignes au total

4. Trier sur un calcul

On peut trier sur un alias défini dans le SELECT.

SELECT nom, prix * stock AS valeur_stock
FROM produits
ORDER BY valeur_stock DESC
LIMIT 5;
Essayer dans le bac à sable
Résultat
nomvaleur_stock
Écran 27"34 884
SSD 1To28 530
Bougie parfumée9 564,44
Hub USB-C7 938
Souris sans fil7 725

5 lignes au total

Les erreurs fréquentes

Croire que DESC s'applique à toutes les colonnes

DESC ne vaut que pour la colonne écrite juste avant lui. Ici, departement reste trié en ordre croissant.

À éviter
SELECT * FROM employes ORDER BY salaire, departement DESC;
Correct
SELECT * FROM employes ORDER BY salaire DESC, departement DESC;

Placer ORDER BY avant WHERE

L'ordre des clauses est imposé : WHERE vient toujours avant ORDER BY.

À éviter
SELECT * FROM produits ORDER BY prix WHERE stock > 0;
Correct
SELECT * FROM produits WHERE stock > 0 ORDER BY prix;

Compter sur l'ordre naturel de la table

Sans ORDER BY, l'ordre des lignes n'est pas garanti, même s'il semble stable. Ajoutez toujours ORDER BY quand l'ordre compte.

À éviter
SELECT nom FROM produits LIMIT 3;
Correct
SELECT nom FROM produits ORDER BY nom LIMIT 3;

Exercices

Essayez d'écrire la requête vous-même avant d'ouvrir la solution.

Défi 1. Affichez les clients triés par ville (A → Z), puis par nom.

Voir une solution
SELECT ville, nom, prenom FROM clients ORDER BY ville, nom;
villenomprenom
BordeauxBenaliLucas
BordeauxBernardAdam
BordeauxBlancLucas
BordeauxBonnetRayan
BordeauxDurandOmar
BordeauxFaureZoé
BordeauxGarciaCamille
BordeauxGarciaCamille

120 lignes au total · 8 affichées

Essayer dans le bac à sable

Défi 2. Affichez les produits du plus grand stock au plus petit.

Voir une solution
SELECT nom, stock FROM produits ORDER BY stock DESC;
nomstock
Gourde inox199
Livre de cuisine183
Café en grains173
Hub USB-C162
Raquette162
Bougie parfumée157
Vase céramique128
Corde à sauter109

29 lignes au total · 8 affichées

Essayer dans le bac à sable
Envie de vous entraîner davantage ?

Les exercices interactifs sont corrigés automatiquement, avec un prof qui explique vos erreurs. Une leçon résumée reste affichée à côté de l'éditeur.

Faire les exercices interactifs

Questions fréquentes

Quel est l'ordre par défaut de ORDER BY ?

L'ordre croissant (ASC). ORDER BY prix et ORDER BY prix ASC sont identiques.

Peut-on trier sur une colonne qui n'est pas affichée ?

Oui, dans une requête simple. Par exemple SELECT nom FROM produits ORDER BY prix trie par prix sans l'afficher.

Peut-on écrire ORDER BY 2 ?

Oui, le chiffre désigne la position de la colonne dans le SELECT. C'est pratique mais fragile : si vous changez l'ordre des colonnes, le tri change aussi.

À lire ensuite