Help wanted!
The following content of this documentation page has been machine-translated. But unlike other websites, it is not done on the fly. This translated text lives on GitHub repository alongside main ClickHouse codebase and waits for fellow native speakers to make it more human-readable. You can also use the original English version as a reference.
La Clause 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
DISTINCT
fonctionne avec NULL 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
Il est possible d'obtenir le même résultat en appliquant GROUP BY 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 est omis et LIMIT 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
DISTINCT
n'est pas pris en charge si SELECT
a au moins une colonne de tableau.
Exemple
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:
┌─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:
┌─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:
┌─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.