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 DISTINCT
para eliminar filas duplicadas de un conjunto de resultados de una consulta.