Saltar a contenido

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 - Sample Table

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;

PostgreSQL Distinct - select distinct one column

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;

PostgreSQL Distinct - select distinct two columns

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.