Trier et limiter

Un résultat non trié arrive dans l'ordre d'insertion en base — rarement ce qu'un analyste veut afficher. ORDER BY impose l'ordre de ton choix. Et quand la table entière n'est pas nécessaire, LIMIT coupe au bon endroit.

Mettre de l'ordre dans les résultats

Tu sais maintenant afficher des données (SELECT) et les filtrer (WHERE). Mais l'ordre dans lequel elles apparaissent reste celui de la table, un peu au hasard. Or, on a souvent besoin de trier : afficher les films du mieux noté au moins bien noté, du plus ancien au plus récent…

Et parfois, on ne veut pas toute la liste : juste les trois meilleurs, par exemple. Trier puis limiter, c'est ce qu'on voit dans cette leçon, avec ORDER BY et LIMIT.

Table films

titreanneenotegenreoscar
Inception20108.8SFtrue
Le Parrain19729.2Drametrue
Pulp Fiction19948.9Crimefalse
Amélie Poulain20018.3Comédiefalse

ORDER BY : trier les résultats

Pour trier, on ajoute ORDER BY suivi de la colonne sur laquelle trier. SQL réorganise alors les lignes du résultat selon cette colonne. La clause se place après le WHERE (s'il y en a un), vers la fin de la requête.

Trions nos films par note. On verra juste après dans quel sens.

L'ordre croissant (ASC)

Par défaut, ORDER BY trie du plus petit au plus grand : c'est l'ordre croissant. Pour une note, ça donne du moins bien noté au mieux noté :

La requête
SELECT titre, note FROM films ORDER BY note
Résultat · 4 lignes
titrenote
Amélie Poulain8.3
Inception8.8
Pulp Fiction8.9
Le Parrain9.2

Les films sont rangés du plus petit au plus grand score. On peut écrire explicitement ORDER BY note ASC (ASC pour *ascending*, croissant), mais comme c'est le comportement par défaut, le ASC est facultatif.

L'ordre décroissant (DESC)

Le plus souvent, on veut l'inverse : les meilleurs en premier. On ajoute alors DESC (*descending*, décroissant) après la colonne :

La requête
SELECT titre, note FROM films ORDER BY note DESC
Résultat · 4 lignes
titrenote
Le Parrain9.2
Pulp Fiction8.9
Inception8.8
Amélie Poulain8.3

Cette fois, le mieux noté arrive en tête. Le DESC, lui, n'est jamais facultatif : si tu veux le tri décroissant, tu dois l'écrire.

LIMIT : ne garder qu'un certain nombre

LIMIT suivi d'un nombre ne garde que les N premières lignes du résultat. Très pratique quand une table est énorme et qu'on veut juste un aperçu :

La requête
SELECT titre FROM films LIMIT 2
Résultat · 2 lignes
titre
Inception
Le Parrain

On obtient seulement deux lignes. LIMIT se place tout à la fin de la requête. Seul, il coupe la liste un peu arbitrairement (dans l'ordre de la table) — c'est en le combinant avec un tri qu'il devient vraiment utile.

Le « top N » : trier puis limiter

C'est la combinaison la plus courante, et la plus puissante de cette leçon : trier d'abord, limiter ensuite. Le résultat, c'est un classement — le « top 3 », le « top 10 ».

Pour les 2 films les mieux notés, on trie par note décroissante, puis on garde les 2 premiers :

La requête
SELECT titre, note FROM films ORDER BY note DESC LIMIT 2
Résultat · 2 lignes
titrenote
Le Parrain9.2
Pulp Fiction8.9

L'ordre des clauses compte : d'abord ORDER BY (on classe), ensuite LIMIT (on coupe). SQL trie toute la table, puis prend les 2 premières lignes du classement. Inverser n'aurait pas de sens.

Récapitulatif

En résumé, pour trier et limiter :

📌 Trier et limiter — l'essentiel
ORDER BY colonne→ trie (croissant par défaut)
ORDER BY colonne DESC→ trie décroissant (DESC obligatoire)
LIMIT n→ garde seulement les n premières lignes
ORDER BY … DESC LIMIT n→ le « top N », un classement
Exemple complet
SELECT titre, note FROM films ORDER BY note DESC LIMIT 2

💡 Bon à savoir : on peut trier sur plusieurs colonnes à la fois (par exemple par genre, puis par note à l'intérieur de chaque genre) en les séparant par une virgule dans le ORDER BY. Un raffinement que tu retrouveras plus loin.

Passe à la pratique

Cette leçon t'a montré la théorie. Pour maîtriser SQL, rien ne vaut la pratique : accède aux exercices et au bac à sable PostgreSQL réel.

← Tous les cours SQL