> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-fix-nav-issues.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> Documentación de la cláusula DISTINCT

# Cláusula DISTINCT

Si se especifica `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:

```text theme={null}
┌─a─┬─b─┬─c─┐
│ 1 │ 1 │ 1 │
│ 1 │ 1 │ 1 │
│ 2 │ 2 │ 2 │
│ 2 │ 2 │ 2 │
│ 1 │ 1 │ 2 │
│ 1 │ 2 │ 2 │
└───┴───┴───┘
```

Usar `DISTINCT` sin especificar columnas:

```sql theme={null}
SELECT DISTINCT * FROM t1;
```

```text theme={null}
┌─a─┬─b─┬─c─┐
│ 1 │ 1 │ 1 │
│ 2 │ 2 │ 2 │
│ 1 │ 1 │ 2 │
│ 1 │ 2 │ 2 │
└───┴───┴───┘
```

Uso de `DISTINCT` con columnas específicas:

```sql theme={null}
SELECT DISTINCT ON (a,b) * FROM t1;
```

```text theme={null}
┌─a─┬─b─┬─c─┐
│ 1 │ 1 │ 1 │
│ 2 │ 2 │ 2 │
│ 1 │ 2 │ 2 │
└───┴───┴───┘
```

<div id="distinct-and-order-by">
  ## DISTINCT y ORDER BY
</div>

ClickHouse permite usar las cláusulas `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:

```text theme={null}
┌─a─┬─b─┐
│ 2 │ 1 │
│ 1 │ 2 │
│ 3 │ 3 │
│ 2 │ 4 │
└───┴───┘
```

Selección de datos:

```sql theme={null}
SELECT DISTINCT a FROM t1 ORDER BY b ASC;
```

```text theme={null}
┌─a─┐
│ 2 │
│ 1 │
│ 3 │
└───┘
```

Selección de datos con diferentes direcciones de ordenación:

```sql theme={null}
SELECT DISTINCT a FROM t1 ORDER BY b DESC;
```

```text theme={null}
┌─a─┐
│ 3 │
│ 1 │
│ 2 │
└───┘
```

La fila `2, 4` se truncó antes de ordenar.

Tenga en cuenta esta particularidad de la implementación al escribir consultas.

<div id="null-processing">
  ## Tratamiento de NULL
</div>

`DISTINCT` funciona con [NULL](/es/reference/syntax#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.

<div id="alternatives">
  ## Alternativas
</div>

Es posible obtener el mismo resultado aplicando [GROUP BY](/es/reference/statements/select/group-by) al mismo conjunto de valores especificado en la cláusula `SELECT`, sin usar ninguna función de agregación. Sin embargo, hay algunas diferencias con respecto al enfoque de `GROUP BY`:

* `DISTINCT` se puede aplicar junto con `GROUP BY`.
* Cuando se omite [ORDER BY](/es/reference/statements/select/order-by) y se define [LIMIT](/es/reference/statements/select/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.
