SELECT DISTINCT, en el resultado de una consulta solo permanecerán las filas únicas. Es decir, de cada conjunto de filas completamente idénticas en el resultado, solo permanecerá una.
Puede especificar la lista de columnas que deben tener valores únicos: SELECT DISTINCT ON (column1, column2,...). Si no se especifican las columnas, se tendrán en cuenta todas.
Considere la tabla:
DISTINCT sin especificar columnas:
DISTINCT con columnas específicas:
DISTINCT y ORDER BY
DISTINCT y ORDER BY para columnas diferentes en una misma consulta. La cláusula DISTINCT se ejecuta antes que la cláusula ORDER BY.
Considere la tabla:
2, 4 se truncó antes de ordenar.
Tenga en cuenta esta particularidad de la implementación al escribir consultas.
Tratamiento de NULL
DISTINCT funciona con NULL como si NULL fuera un valor específico y NULL==NULL. En otras palabras, en los resultados de DISTINCT, las distintas combinaciones con NULL aparecen solo una vez. Esto difiere del tratamiento de NULL en la mayoría de los demás contextos.
Alternativas
SELECT, sin usar ninguna función de agregación. Sin embargo, hay algunas diferencias con respecto al enfoque de GROUP BY:
DISTINCTse puede aplicar junto conGROUP BY.- Cuando se omite ORDER BY y se define LIMIT, la consulta deja de ejecutarse inmediatamente después de leer el número requerido de filas distintas.
- Los bloques de datos se generan a medida que se procesan, sin esperar a que toda la consulta termine de ejecutarse.