web-dev-qa-db-fra.com

Paire distincte de valeurs SQL

Considérer

 create table pairs ( number a, number b ) 

Où les données sont 

1,1
1,1
1,1
2,4
2,4
3,2
3,2
5,1

Etc. 

Quelle requête me donne les valeurs distinctes de la colonne numérique b

1,1
5,1
2,4
3,2

seulement 

J'ai essayé

select distinct ( a ) , b from pairs group by b 

mais me donne "pas un groupe par expression" 

49
OscarRyz

Ce que vous voulez dire est soit

SELECT DISTINCT a, b FROM pairs;

ou

SELECT a, b FROM pairs GROUP BY a, b;
65

Si vous voulez traiter 1,2 et 2,1 comme la même paire, cela vous donnera la liste unique sur 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

Inspiré par @meszias, répondez ci-dessus

13
StuartQ

Cela vous donnera le résultat que vous donnez à titre d'exemple:

SELECT DISTINCT a, b
FROM pairs

si vous voulez filtrer les n-uplets que vous pouvez utiliser de cette façon:

select distinct (case a > b then (a,b) else (b,a) end) from pairs

la bonne chose est que vous n'avez pas à utiliser group by.

4
meszias

Si vous voulez juste un nombre des paires distinctes.

La manière la plus simple de le faire est la suivante SELECT COUNT(DISTINCT a,b) FROM pairs

Les solutions précédentes listaient toutes les paires, puis il fallait faire une seconde requête pour les compter.

0
adam