mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-12-16 11:22:12 +00:00
cd14f9ebcb
* 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
64 lines
2.3 KiB
Markdown
64 lines
2.3 KiB
Markdown
---
|
|
machine_translated: true
|
|
machine_translated_rev: 72537a2d527c63c07aa5d2361a8829f3895cf2bd
|
|
---
|
|
|
|
# La Clause DISTINCT {#select-distinct}
|
|
|
|
Si `SELECT DISTINCT` est spécifié, seules les lignes uniques restera un résultat de requête. Ainsi, une seule ligne restera hors de tous les ensembles de lignes entièrement correspondantes dans le résultat.
|
|
|
|
## Le Traitement Null {#null-processing}
|
|
|
|
`DISTINCT` fonctionne avec [NULL](../../syntax.md#null-literal) comme si `NULL` ont une valeur spécifique, et `NULL==NULL`. En d'autres termes, dans le `DISTINCT` résultats, différentes combinaisons avec `NULL` une fois seulement. Elle diffère de `NULL` traitement dans la plupart des autres contextes.
|
|
|
|
## Alternative {#alternatives}
|
|
|
|
Il est possible d'obtenir le même résultat en appliquant [GROUP BY](group-by.md) sur le même ensemble de valeurs, comme spécifié comme `SELECT` clause, sans utiliser de fonctions d'agrégation. Mais il y a peu de différences de `GROUP BY` approche:
|
|
|
|
- `DISTINCT` peut être utilisé avec d' `GROUP BY`.
|
|
- Lorsque [ORDER BY](order-by.md) est omis et [LIMIT](limit.md) est définie, la requête s'arrête immédiatement après le nombre de lignes différentes, a été lu.
|
|
- Les blocs de données sont produits au fur et à mesure qu'ils sont traités, sans attendre que la requête entière se termine.
|
|
|
|
## Limitation {#limitations}
|
|
|
|
`DISTINCT` n'est pas pris en charge si `SELECT` a au moins une colonne de tableau.
|
|
|
|
## Exemple {#examples}
|
|
|
|
Clickhouse prend en charge l'utilisation du `DISTINCT` et `ORDER BY` clauses pour différentes colonnes dans une requête. Le `DISTINCT` la clause est exécutée avant la `ORDER BY` clause.
|
|
|
|
Exemple de table:
|
|
|
|
``` text
|
|
┌─a─┬─b─┐
|
|
│ 2 │ 1 │
|
|
│ 1 │ 2 │
|
|
│ 3 │ 3 │
|
|
│ 2 │ 4 │
|
|
└───┴───┘
|
|
```
|
|
|
|
Lors de la sélection de données avec le `SELECT DISTINCT a FROM t1 ORDER BY b ASC` requête, nous obtenons le résultat suivant:
|
|
|
|
``` text
|
|
┌─a─┐
|
|
│ 2 │
|
|
│ 1 │
|
|
│ 3 │
|
|
└───┘
|
|
```
|
|
|
|
Si nous changeons la direction de tri `SELECT DISTINCT a FROM t1 ORDER BY b DESC`, nous obtenons le résultat suivant:
|
|
|
|
``` text
|
|
┌─a─┐
|
|
│ 3 │
|
|
│ 1 │
|
|
│ 2 │
|
|
└───┘
|
|
```
|
|
|
|
Rangée `2, 4` a été coupé avant de les trier.
|
|
|
|
Prenez en compte cette spécificité d'implémentation lors de la programmation des requêtes.
|