Mot-clé DISTINCT de PostgreSQL

Dans PostgreSQL, le mot-clé DISTINCT est utilisé avec l'instruction SELECT pour supprimer les enregistrements en double et récupérer uniquement les enregistrements uniques.

Lorsqu'on travaille avec des données, il peut arriver qu'une table contienne plusieurs enregistrements en double. Lors de l'extraction de tels enregistrements, le mot-clé DISTINCT devient particulièrement pertinent, car il récupère uniquement les enregistrements uniques plutôt que les enregistrements en double.

Syntaxe

La syntaxe de base du mot-clé DISTINCT pour supprimer les enregistrements en double est la suivante :

SELECT DISTINCT column1, column2,.....columnN
FROM table_name
WHERE [condition]

Exemple

Créez la table COMPANY (Téléchargez le fichier SQL COMPANY), le contenu des données est le suivant :

exampledb# select * from COMPANY;
 id | name  | age | address   | salary
----+-------+-----+-----------+--------
  1 | Paul  |  32 | California|  20000
  2 | Allen |  25 | Texas     |  15000
  3 | Teddy |  23 | Norway    |  20000
  4 | Mark  |  25 | Rich-Mond |  65000
  5 | David |  27 | Texas     |  85000
  6 | Kim   |  22 | South-Hall|  45000
  7 | James |  24 | Houston   |  10000
(7 rows)

Insérons deux enregistrements :

INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (8, 'Paul', 32, 'California', 20000.00 );

INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (9, 'Allen', 25, 'Texas', 15000.00 );

Maintenant, les données sont les suivantes :

 id | name  | age | address    | salary
----+-------+-----+------------+--------
  1 | Paul  |  32 | California |  20000
  2 | Allen |  25 | Texas      |  15000
  3 | Teddy |  23 | Norway     |  20000
  4 | Mark  |  25 | Rich-Mond  |  65000
  5 | David |  27 | Texas      |  85000
  6 | Kim   |  22 | South-Hall |  45000
  7 | James |  24 | Houston    |  10000
  8 | Paul  |  32 | California |  20000
  9 | Allen |  25 | Texas      |  15000
(9 rows)

Ensuite, trouvons toutes les valeurs NAME dans la table COMPANY :

exampledb=# SELECT name FROM COMPANY;

Le résultat est le suivant :

 name
-------
 Paul
 Allen
 Teddy
 Mark
 David
 Kim
 James
 Paul
 Allen
(9 rows)

Utilisons maintenant la clause DISTINCT dans l'instruction SELECT :

exampledb=# SELECT DISTINCT name FROM COMPANY;

Le résultat est le suivant :

name
-------
 Teddy
 Paul
 Mark
 David
 Allen
 Kim
 James
(7 rows)

D'après les résultats, vous pouvez voir que les données en double ont été filtrées.

Autres extensions