Palabra clave DISTINCT en PostgreSQL
En PostgreSQL, la palabra clave DISTINCT se usa junto con la sentencia SELECT para eliminar registros duplicados y obtener solo registros únicos.
Cuando trabajamos con datos, puede darse el caso de que haya múltiples registros duplicados en una tabla. Al extraer dichos registros, la palabra clave DISTINCT resulta especialmente útil, ya que obtiene solo una vez cada registro único, en lugar de recuperar 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
Crear la tabla COMPANY (Descargar el archivo SQL de COMPANY), con los siguientes datos:
ejemplodb# 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)
Insertemos dos registros:
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 datos son los siguientes:
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)
A continuación, extraigamos todos los NOMBRES (NAME) de la tabla COMPANY:
ejemplodb=# SELECT name FROM COMPANY;
El resultado es el siguiente:
name ------- Paul Allen Teddy Mark David Kim James Paul Allen (9 rows)
Ahora usemos la cláusula DISTINCT en la sentencia SELECT:
ejemplodb=# SELECT DISTINCT name FROM COMPANY;
El resultado es el siguiente:
name ------- Teddy Paul Mark David Allen Kim James (7 rows)
Como se puede ver en el resultado, los datos duplicados ya han sido filtrados.
Otras extensiones