* split up select.md * array-join.md basic refactoring * distinct.md basic refactoring * format.md basic refactoring * from.md basic refactoring * group-by.md basic refactoring * having.md basic refactoring * additional index.md refactoring * into-outfile.md basic refactoring * join.md basic refactoring * limit.md basic refactoring * limit-by.md basic refactoring * order-by.md basic refactoring * prewhere.md basic refactoring * adjust operators/index.md links * adjust sample.md links * adjust more links * adjust operatots links * fix some links * adjust aggregate function article titles * basic refactor of remaining select clauses * absolute paths in make_links.sh * run make_links.sh * remove old select.md locations * translate docs/es * translate docs/fr * translate docs/fa * remove old operators.md location * change operators.md links * adjust links in docs/es * adjust links in docs/es * minor texts adjustments * wip * update machine translations to use new links * fix changelog * es build fixes * get rid of some select.md links * temporary adjust ru links * temporary adjust more ru links * improve curly brace handling * adjust ru as well * fa build fix * ru link fixes * zh link fixes * temporary disable part of anchor checks
2.2 KiB
machine_translated | machine_translated_rev |
---|---|
true | 72537a2d52 |
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 conGROUP 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.