La cláusula SELECT DISTINCT elimina filas duplicadas de un conjunto de resultados. La cláusula SELECT DISTINCT retiene una fila por cada grupo de duplicados.
La cláusula SELECT DISTINCT puede aplicarse a una o varias columnas de la lista de selección de la sentencia SELECT.
A continuación se ilustra la sintaxis de la cláusula DISTINCT:
SELECT
DISTINCT columna1
FROM
nombre_tabla;
En esta sintaxis, SELECT DISTINCT utiliza los valores de la columna columna1 para evaluar el duplicado.
Si especifica varias columnas, la cláusula SELECT DISTINCT evaluará el duplicado basándose en la combinación de valores de dichas columnas. Por ejemplo
SELECT
DISTINCT columna1, columna2
FROM
nombre_tabla;
En esta sintaxis, el SELECT DISTINCT utiliza la combinación de valores de las columnas columna1 y columna2 para evaluar el duplicado.
Tenga en cuenta que PostgreSQL también ofrece la cláusula DISTINCT ON que conserva la primera entrada única de una columna o combinación de columnas en el conjunto de resultados.
Ejemplos.- SQL SELECT DISTINCT¶
Vamos a crear una nueva tabla llamada distinct_demo e insertar datos en ella para practicar la cláusula DISTINCT.
Ten en cuenta que aprenderás a crear una tabla y a insertar datos en una tabla en el tutorial siguiente. En este tutorial, solo ejecute la sentencia en psql o pgAdmin para ejecutar las sentencias.
Primero, crea la tabla distinct_demo que tiene tres columnas: id, bcolor y fcolor usando la siguiente sentencia CREATE TABLE:
CREATE TABLE distinct_demo (
id SERIAL NOT NULL PRIMARY KEY,
bcolor VARCHAR,
fcolor VARCHAR
)
En segundo lugar, inserta algunas filas en la tabla distinct_demo utilizando la sentencia INSERT:
INSERT INTO distinct_demo (bcolor, fcolor)
VALUES
('rojo', 'rojo'),
('rojo', 'rojo'),
('rojo', NULL),
(NULL, 'rojo'),
('rojo', 'verde'),
('rojo', 'azul'),
('verde', 'rojo'),
('verde', 'azul'),
('verde', 'verde'),
('azul', 'rojo'),
('azul', 'verde'),
('azul', 'azul');
En tercer lugar, recupera los datos de la tabla distinct_demo utilizando la sentencia SELECT:
SELECT
id,
bcolor,
fcolor
FROM
distinct_demo;

PostgreSQL DISTINCT ejemplo de una columna¶
La siguiente sentencia selecciona valores únicos en la columna bcolor de la tabla t1 y ordena el conjunto de resultados por orden alfabético utilizando el ORDER BY.
SELECT
DISTINCT bcolor
FROM
distinct_demo
ORDER BY
bcolor;

DISTINCT columnas múltiples¶
La siguiente sentencia demuestra cómo utilizar la cláusula DISTINCT en múltiples columnas:
SELECT
DISTINCT bcolor,
fcolor
FROM
distinct_demo
ORDER BY
bcolor,
fcolor;

Como hemos especificado las columnas bcolor y fcolor en la cláusula SELECT DISTINCT, la sentencia combina los valores de las columnas bcolor y fcolor para evaluar la unicidad de las filas.
La consulta devuelve la combinación única de bcolor y fcolor de la tabla distinct_demo.
Observe que la tabla distinct_demo tiene dos filas con el valor red en las columnas bcolor y fcolor. Cuando aplicamos DISTINCT a ambas columnas, se elimina una fila duplicada del conjunto de resultados.
Resumen¶
- Utilice
SELECT DISTINCTpara eliminar filas duplicadas de un conjunto de resultados de una consulta.