Leçon 4 sur 6

Supprimer les doublons avec DISTINCT et limiter les résultats

Obtenez une liste de valeurs uniques et construisez un classement court, stable et facile à vérifier.

17 minAccès gratuit

À la fin de cette leçon

  • Comprendre ce que DISTINCT rend unique
  • Limiter le nombre de lignes retournées
  • Associer LIMIT à un tri déterministe

DISTINCT retire les lignes identiques du résultat

Une colonne peut contenir plusieurs fois la même valeur. SELECT DISTINCT conserve une seule occurrence de chaque combinaison affichée, sans modifier la table d’origine.

Pour connaître les catégories présentes dans un catalogue, il suffit de sélectionner la colonne categorie avec DISTINCT.

Liste des catégories sans répétition
SELECT DISTINCT categorie
FROM produits
ORDER BY categorie ASC;
DISTINCT agit sur le résultat complet de SELECT. Il ne supprime aucune ligne dans la base.

Avec plusieurs colonnes, l’unicité porte sur la combinaison

Si categorie et marque apparaissent dans SELECT, SQL conserve chaque couple catégorie-marque différent. Une même catégorie peut donc figurer sur plusieurs lignes lorsqu’elle contient plusieurs marques.

Avant d’utiliser DISTINCT, formulez précisément ce qu’une ligne unique doit représenter. Cette étape évite de masquer un problème de jointure ou de qualité des données.

  • Une colonne : une valeur unique par ligne.
  • Deux colonnes : un couple unique par ligne.
  • DISTINCT ne remplace pas une condition de jointure correcte.
Combinaisons catégorie-marque uniques
SELECT DISTINCT categorie, marque
FROM produits
ORDER BY categorie ASC, marque ASC;

LIMIT réduit le nombre de lignes retournées

LIMIT s’écrit à la fin de la requête et conserve seulement le nombre de lignes demandé. Il est utile pour explorer une grande table ou afficher un classement court.

Sans ORDER BY, la base ne garantit pas quelles lignes arriveront en premier. Un top 3 doit donc toujours préciser son ordre.

Les trois produits les plus chers
SELECT produit, prix
FROM produits
ORDER BY prix DESC, id_produit ASC
LIMIT 3;
Le second critère de tri départage les prix identiques et rend le résultat reproductible.

Filtrer, trier, puis limiter

Dans une requête simple, WHERE sélectionne d’abord les lignes pertinentes, ORDER BY les classe, puis LIMIT réduit le résultat.

Cette séquence permet par exemple de trouver les deux produits de bureau les moins chers sans mélanger les autres catégories.

  • PostgreSQL, MySQL et SQLite utilisent LIMIT.
  • SQL Server utilise généralement TOP ou OFFSET/FETCH.
  • Ajoutez un critère de départage lorsque le premier tri n’est pas unique.
Deux produits de bureau les moins chers
SELECT produit, prix
FROM produits
WHERE categorie = 'Bureau'
ORDER BY prix ASC, id_produit ASC
LIMIT 2;

Erreurs fréquentes

DISTINCT et LIMIT sont simples, mais une requête techniquement valide peut répondre à la mauvaise question.

  • Utiliser DISTINCT pour cacher des doublons créés par une jointure incorrecte.
  • Croire que DISTINCT s’applique uniquement à la première colonne sélectionnée.
  • Écrire LIMIT sans ORDER BY pour produire un classement.
  • Limiter avant d’avoir appliqué le bon filtre métier.

Vérifiez votre compréhension

Affichez les trois catégories uniques de la table produits, dans l’ordre alphabétique.

À compléter
SELECT -- valeurs uniques
FROM produits
ORDER BY -- tri
LIMIT -- nombre de lignes;

Progression locale

Avez-vous terminé cette leçon ?

Votre choix reste dans votre navigateur et ne nécessite aucun compte.

Leçon suivante