Résumé : dans ce tutoriel, vous apprendrez à utiliser la clause PostgreSQL SELECT DISTINCT
pour supprimer les lignes en double d’un jeu de résultats renvoyé par une requête.
Introduction à la clause SELECT DISTINCT de PostgreSQL
La clause DISTINCT
est utilisée dans l’instruction SELECT
pour supprimer les lignes en double d’un ensemble de résultats. La clause DISTINCT
conserve une ligne pour chaque groupe de doublons. La clause DISTINCT
peut être appliquée à une ou plusieurs colonnes de la liste de sélection de l’instruction SELECT
.
Les éléments suivants illustrent la syntaxe de la clause DISTINCT
:
Code language: SQL (Structured Query Language) (sql)SELECT DISTINCT column1FROM table_name;
Dans cette instruction, les valeurs de la colonne column1
sont utilisées pour évaluer le doublon.
Si vous spécifiez plusieurs colonnes, la clause DISTINCT
évaluera le doublon en fonction de la combinaison des valeurs de ces colonnes.
Code language: SQL (Structured Query Language) (sql)SELECT DISTINCT column1, column2FROM table_name;
Dans ce cas, la combinaison des valeurs des deux colonnes column1
et column2
sera utilisée pour évaluer le doublon.
PostgreSQL fournit également l’instruction DISTINCT ON (expression)
pour conserver la « première » ligne de chaque groupe de doublons en utilisant la syntaxe suivante :
L’ordre des lignes retournées par l’instruction SELECT
n’est pas spécifié donc la « première » ligne de chaque groupe du doublon est également non spécifiée.
C’est une bonne pratique de toujours utiliser la clause ORDER BY
avec la DISTINCT ON(expression)
pour rendre le jeu de résultats prévisible.
Notez que l’expression DISTINCT ON
doit correspondre à l’expression la plus à gauche dans la clause ORDER BY
.
Exemples de PostgreSQL SELECT DISTINCT
Créons une nouvelle table appelée distinct_demo
et insérons-y des données pour pratiquer la clause DISTINCT
.
Notez que vous apprendrez comment créer une table et insérer des données dans une table dans le tutoriel suivant. Dans ce tutoriel, il vous suffit d’exécuter l’instruction dans psql ou pgAdmin pour exécuter les instructions.
D’abord, utilisez l’instruction suivante CREATE TABLE
pour créer la table distinct_demo
qui se compose de trois colonnes : id
bcolor
et fcolor
.
Code language: SQL (Structured Query Language) (sql)CREATE TABLE distinct_demo (id serial NOT NULL PRIMARY KEY,bcolor VARCHAR,fcolor VARCHAR);
Deuxièmement, insérez quelques lignes dans la table distinct_demo
en utilisant l’instruction INSERT
suivante :
Troisièmement, interrogez les données du tableau distinct_demo
à l’aide de l’instruction SELECT
:
Code language: SQL (Structured Query Language) (sql)SELECTid,bcolor,fcolorFROMdistinct_demo ;
Exemple de DISTINCT PostgreSQL à une colonne
L’instruction suivante sélectionne les des valeurs uniques dans la colonne bcolor
de la table t1
et trie le jeu de résultats par ordre alphabétique en utilisant la clause ORDER BY
.
Code language: SQL (Structured Query Language) (sql)SELECTDISTINCT bcolorFROMdistinct_demoORDER BYbcolor;
PostgreSQL DISTINCT plusieurs colonnes
L’instruction suivante démontre comment utiliser la clause DISTINCT
sur plusieurs colonnes :
Code language: SQL (Structured Query Language) (sql)SELECTDISTINCT bcolor,fcolorFROMdistinct_demoORDER BYbcolor,fcolor;
Parce que nous avons spécifié les deux colonnes bcolor
et fcolor
dans la SELECT DISTINCT
clause, PostgreSQL a combiné les valeurs des deux colonnes bcolor
et fcolor
pour évaluer l’unicité des lignes.
La requête renvoie la combinaison unique de bcolor
et fcolor
de la table distinct_demo
. Remarquez que le tableau distinct_demo
comporte deux lignes avec la valeur red
dans les deux colonnes bcolor
et fcolor
. Lorsque nous avons appliqué le DISTINCT
aux deux colonnes, une ligne a été supprimée du jeu de résultats car il s’agit du doublon.
Exemple de PostgreSQL DISTINCT ON
L’instruction suivante trie le jeu de résultats par les bcolor
et fcolor
, puis pour chaque groupe de doublons, elle conserve la première ligne dans le jeu de résultats retourné.
Code language: SQL (Structured Query Language) (sql)SELECTDISTINCT ON (bcolor) bcolor,fcolorFROMdistinct_demo ORDER BYbcolor,fcolor;
Voici le résultat :
Dans ce tutoriel, vous avez appris à utiliser l’instruction PostgreSQL SELECT DISTINCT
pour supprimer les lignes en double retournées par une requête.
- Ce tutoriel vous a-t-il été utile ?
- OuiNon
.