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)