2008-10-10 9 views

Antwort

94

Wie wäre es einfach:

select distinct c1, c2 from t 

oder

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

Abhängig von den Daten ist group by langsamer als distinct – noizer

+0

Für diejenigen, die sehen, dass 'Operand 1 Spalte (n) 'Fehler enthalten sollte, ist Ihr Problem, dass Sie wahrscheinlich tun' Select distinct (c1, c2) von t' und Sie sind nicht erlaubt Klammern hier. So bin ich hier angekommen. – BookOfGreg

15

Wenn Sie von unterschiedlichen Werten wollen nur zwei Felder, und das Rück andere Felder, die mit ihnen, dann die anderen Felder müssen irgendeine Art von Aggregation haben auf ihnen (sum, min, max, usw.), und die zwei Spalten, die Sie distinct haben wollen, müssen in der group by-Klausel erscheinen. Ansonsten ist es nur so, wie Decker sagt.

3

Wenn Sie noch zu einer Gruppe von einer Spalte nur wollen (wie ich wollte) Sie können Nest die Abfrage:

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

können Sie durch zwei Spalten deutliche Ergebnis erhalten verwenden unter SQL:

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