Cláusula DISTINCT 

Si SELECT DISTINCT se especifica, sólo las filas únicas permanecerán en un resultado de consulta. Por lo tanto, solo quedará una sola fila de todos los conjuntos de filas completamente coincidentes en el resultado.

Procesamiento nulo 

DISTINCT trabaja con NULL como si NULL Era un valor específico, y NULL==NULL. En otras palabras, en el DISTINCT resultados, diferentes combinaciones con NULL se producen sólo una vez. Se diferencia de NULL procesamiento en la mayoría de los otros contextos.

Alternativa 

Es posible obtener el mismo resultado aplicando GROUP BY en el mismo conjunto de valores especificados como SELECT cláusula, sin utilizar ninguna función agregada. Pero hay pocas diferencias de GROUP BY enfoque:

  • DISTINCT se puede aplicar junto con GROUP BY.
  • Cuando ORDER BY se omite y LIMIT se define, la consulta deja de ejecutarse inmediatamente después de que se haya leído el número requerido de filas diferentes.
  • Los bloques de datos se generan a medida que se procesan, sin esperar a que finalice la ejecución de toda la consulta.

Limitacion 

DISTINCT no se admite si SELECT tiene al menos una columna de matriz.

Ejemplos 

ClickHouse admite el uso de DISTINCT y ORDER BY para diferentes columnas en una consulta. El DISTINCT cláusula se ejecuta antes de ORDER BY clausula.

Tabla de ejemplo:

┌─a─┬─b─┐
│ 2 │ 1 │
│ 1 │ 2 │
│ 3 │ 3 │
│ 2 │ 4 │
└───┴───┘

Al seleccionar datos con el SELECT DISTINCT a FROM t1 ORDER BY b ASC consulta, obtenemos el siguiente resultado:

┌─a─┐
│ 2 │
│ 1 │
│ 3 │
└───┘

Si cambiamos la dirección de clasificación SELECT DISTINCT a FROM t1 ORDER BY b DESC, obtenemos el siguiente resultado:

┌─a─┐
│ 3 │
│ 1 │
│ 2 │
└───┘

Fila 2, 4 se cortó antes de clasificar.

Tenga en cuenta esta especificidad de implementación al programar consultas.

Clasificación: 5 - 3 voto

¿Este contenido fue útil?
★★★★★