2008-10-10 7 views

Répondre

94

Que diriez-vous simplement:

select distinct c1, c2 from t 

ou

select c1, c2, count(*) 
from t 
group by c1, c2 
+0

Selon les données, grouper est plus lent que distinct – noizer

+0

Pour ceux qui voient que l'opérande doit contenir 1 colonne (s) ', votre problème est que vous faites probablement' select distinct (c1, c2) de t' et vous n'êtes pas autorisé parenthèses ici. Voilà comment je suis arrivé ici. – BookOfGreg

15

Si vous voulez des valeurs distinctes de deux champs, plus retourner d'autres champs avec eux, les autres champs doivent avoir une sorte d'agrégation sur eux (somme, min, max, etc.), et les deux colonnes que vous voulez distinctes doivent apparaître dans la clause group by. Sinon, c'est comme dit Decker.

3

Si vous voulez encore le groupe que par une colonne (comme je le voulais), vous pouvez imbriquer la requête:

select c1, count(*) from (select distinct c1, c2 from t) group by c1 
3

Vous pouvez obtenir le résultat distinct par deux colonnes ci-dessous utilisent SQL:

SELECT COUNT(*) FROM (SELECT DISTINCT c1, c2 FROM [TableEntity]) TE 
Questions connexes