Problème :
Vous souhaitez éliminer les lignes en double du jeu de résultats d'une requête afin que chaque ligne n'apparaisse qu'une seule fois.
Exemple :
Notre base de données a une table nommée clothes
avec des données dans les colonnes suivantes :id
, name
, color
, et year_produced
.
identifiant | nom | couleur | année_produite |
---|---|---|---|
1 | T-shirt | jaune | 2015 |
2 | veste | bleu | 2016 |
3 | jeans | noir | 2015 |
4 | veste | bleu | 2015 |
5 | veste | vert | 2016 |
6 | veste | jaune | 2017 |
7 | chapeau | jaune | 2017 |
Obtenons les noms et couleurs non répétés des vêtements produits avant 2017.
Solution :
SELECT DISTINCT name, color FROM clothes WHERE year_produced < 2017;
Voici le résultat :
nom | couleur |
---|---|
T-shirt | jaune |
veste | bleu |
jeans | noir |
veste | vert |
Notez que le bleu
Discussion :
Utilisez simplement le DISTINCT
mot-clé après SELECT
si vous souhaitez sélectionner uniquement des lignes non répétées. Ce mot-clé force la requête à supprimer toutes les lignes en double, en se basant uniquement sur les colonnes que vous avez répertoriées.
Voici un exemple de sélection des lignes pour lesquelles le nom de l'élément est unique :
SELECT DISTINCT name FROM clothes WHERE year_produced < 2017;
Contrairement à la requête précédente, celle-ci ne renvoie que trois enregistrements :
nom | |
---|---|
T-shirt | |
jeans | |
Alors qu'il y a quatre jeans dans le tableau d'origine (deux bleus, un vert et un jaune), l'article n'apparaît qu'une seule fois dans cet ensemble de résultats grâce au DISTINCT
mot-clé.