Erwägen
create table pairs ( number a, number b )
Wo sind die Daten?
1,1
1,1
1,1
2,4
2,4
3,2
3,2
5,1
Usw.
Welche Abfrage gibt mir die eindeutigen Werte, die die Zahlenspalte b hat? So kann ich sehen
1,1
5,1
2,4
3,2
nur
Ich habe es versucht
select distinct ( a ) , b from pairs group by b
aber gibt mir "keine Gruppe durch Ausdruck"
Was du meinst ist entweder
SELECT DISTINCT a, b FROM pairs;
oder
SELECT a, b FROM pairs GROUP BY a, b;
Wenn Sie 1,2 und 2,1 als dasselbe Paar behandeln möchten, erhalten Sie eine eindeutige Liste in MS-SQL:
SELECT DISTINCT
CASE WHEN a > b THEN a ELSE b END as a,
CASE WHEN a > b THEN b ELSE a END as b
FROM pairs
Inspiriert von @meszias Antwort oben
Dies gibt Ihnen das Ergebnis, das Sie als Beispiel geben:
SELECT DISTINCT a, b
FROM pairs
wenn Sie die Tupel filtern möchten, können Sie diese auf folgende Weise verwenden:
select distinct (case a > b then (a,b) else (b,a) end) from pairs
das Gute ist, dass Sie keine Gruppe verwenden müssen.
Wenn Sie nur eine Anzahl der verschiedenen Paare wünschen.
Der einfachste Weg, dies zu tun, ist wie folgt :__.SELECT COUNT(DISTINCT a,b) FROM pairs
Bei den vorherigen Lösungen wurden alle Paare aufgelistet. Anschließend mussten Sie eine zweite Abfrage durchführen, um sie zu zählen.