PostgreSQL - Mot clé DISTINCT

Le PostgreSQL DISTINCT Le mot clé est utilisé en conjonction avec l'instruction SELECT pour éliminer tous les enregistrements en double et récupérer uniquement les enregistrements uniques.

Il peut y avoir une situation où vous avez plusieurs enregistrements en double dans une table. Lors de la récupération de tels enregistrements, il est plus judicieux de récupérer uniquement les enregistrements uniques au lieu de récupérer les enregistrements en double.

Syntaxe

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

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

Exemple

Considérez la table COMPANY ayant des enregistrements comme suit -

# 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)

Ajoutons deux autres enregistrements à ce tableau comme suit -

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 );

Désormais, les enregistrements de la table COMPANY seraient -

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)

Tout d'abord, voyons comment la requête SELECT suivante renvoie des enregistrements de salaire en double -

testdb=# SELECT name FROM COMPANY;

Cela produirait le résultat suivant -

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

Maintenant, utilisons DISTINCT mot-clé avec la requête SELECT ci-dessus et voir le résultat -

testdb=# SELECT DISTINCT name FROM COMPANY;

Cela produirait le résultat suivant où nous n'avons aucune entrée en double -

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