PostgreSQL: cláusula DISTINCT

Los datos expuestos en este blog, son solo de índole informativo. Por favor realiza siempre una copia de seguridad antes de realizar cualquier cambio en tu proyecto.

PostgreSQL: cláusula DISTINCT

Este tutorial de PostgreSQL explica cómo usar PostgreSQL Cláusula DISTINCT Con sintaxis y ejemplos.

describir

La cláusula DISTINCT de PostgreSQL se usa para eliminar duplicados del conjunto de resultados. La cláusula DISTINCT solo se puede usar con instrucciones SELECT.

sintaxis

La sintaxis de la cláusula DISTINCT en PostgreSQL es:

SELECT DISTINCT | DISTINCT ON (distinct_expressions)
expressions
FROM tables
[WHERE conditions];

parámetro o parámetro

distintivas_expresiones Expresiones utilizadas para eliminar duplicados. Expresión La columna o cálculo que desea recuperar. tabla La tabla de la que desea recuperar registros. Debe aparecer al menos una tabla en la cláusula FROM. La condición WHERE es opcional. Para seleccionar las condiciones que debe cumplir un registro.

notas

  • Cuando solo se proporciona una expresión en la cláusula DISTINCT, la consulta devuelve valores únicos para esa expresión.
  • Cuando se proporcionan varias expresiones en la cláusula DISTINCT, la consulta recupera combinaciones únicas de las expresiones enumeradas.
  • Cuando se especifica la palabra clave DISTINCT ON, la consulta devuelve valores únicos para expresiones_distinguibles y otros campos (limitado a 1) para los registros seleccionados de acuerdo con la cláusula ORDER BY.
  • En PostgreSQL, la cláusula DISTINCT no ignora los valores NULL. Por lo tanto, cuando usa la cláusula DISTINCT en su declaración SQL, su conjunto de resultados contendrá NULL como valores distintos.

Ejemplo: usar una sola expresión

Veamos el ejemplo de cláusula DISTINCT más simple en PostgreSQL. Podemos usar la cláusula DISTINCT para devolver un campo que elimina los duplicados del conjunto de resultados.

Por ejemplo:

SELECT DISTINCT last_name
FROM contacts
ORDER BY last_name;

Este ejemplo de PostgreSQL DISTINCT devolverá todos los valores únicos de last_name de la tabla de contactos.

Ejemplo: uso de varias expresiones

Veamos cómo usar la cláusula DISTINCT de PostgreSQL para eliminar duplicados de varios campos en una instrucción SELECT.

Por ejemplo:

SELECT DISTINCT last_name, city, state
FROM contacts
ORDER BY last_name, city, state;

Este ejemplo de cláusula DISTINCT de PostgreSQL devolverá cada combinación única de apellido, ciudad y estado de la tabla de contactos. En este caso, se aplica DISTINCT a cada campo enumerado después de la palabra clave DISTINCT, devolviendo así una combinación diferente.

Ejemplo – DISTINTO EN

Una cosa que es única en PostgreSQL en comparación con otras bases de datos es que tiene otra opción cuando usa la cláusula DISTINCT, llamada DISTINCT ON.

La cláusula DISTINCT ON solo devolverá la primera fila de DISTINCT ON (distinct_expressions) según la cláusula ORDER BY proporcionada en la consulta. Todos los campos adicionales enumerados en la declaración SELECT se devolverán para la primera fila. Es un poco como hacer un LÍMITE para cada combinación de DISTINCT ON (distinct_expressions) .

Exploremos más a fondo cómo usar DISTINCT ON en la cláusula DISTINCT y qué devuelve.

Entonces podemos modificar el ejemplo anterior:

SELECT DISTINCT ON (last_name) last_name, city, state
FROM contacts
ORDER BY last_name, city, state;

Este ejemplo de una cláusula DISTINCT que utiliza la palabra clave DISTINCT ON devolverá todos los valores de apellido únicos. Pero en este caso, para cada valor de apellido único, solo devolverá el primer registro de apellido único que encuentre, según la cláusula ORDER BY y los valores de ciudad y estado en ese registro.

No devuelve una combinación única de apellido, ciudad y estado. En efecto, haga LIMIT 1 para cada DISTINCT ON (last_name) y devuelva los valores de ciudad y estado correspondientes después de seleccionar los registros a devolver.