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.

Rating: 4.3 - 6 votes

Was this content helpful?
★★★★☆