PostgreSQL - Palabra clave DISTINCT

El PostgreSQL DISTINCT La palabra clave se usa junto con la instrucción SELECT para eliminar todos los registros duplicados y obtener solo registros únicos.

Puede haber una situación en la que tenga varios registros duplicados en una tabla. Al buscar dichos registros, tiene más sentido buscar solo registros únicos en lugar de buscar registros duplicados.

Sintaxis

La sintaxis básica de la palabra clave DISTINCT para eliminar registros duplicados es la siguiente:

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

Ejemplo

Considere la tabla EMPRESA que tiene registros de la siguiente manera:

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

Agreguemos dos registros más a esta tabla de la siguiente manera:

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

Ahora, los registros de la tabla EMPRESA serían:

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)

Primero, veamos cómo la siguiente consulta SELECT devuelve registros de salario duplicados:

testdb=# SELECT name FROM COMPANY;

Esto produciría el siguiente resultado:

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

Ahora, usemos DISTINCT palabra clave con la consulta SELECT anterior y vea el resultado:

testdb=# SELECT DISTINCT name FROM COMPANY;

Esto produciría el siguiente resultado donde no tenemos ninguna entrada duplicada:

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