web-dev-qa-db-ja.com

値の異なるSQL

検討する

 create table pairs ( number a, number b ) 

データがある場所

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

等。

クエリはどのように番号列bが持っている個別の値を与えるので、私は見ることができます

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

のみ

私はもう試した

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

しかし、「式によるグループではありません」

52
OscarRyz

あなたが意味するのは

SELECT DISTINCT a, b FROM pairs;

または

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

1,2と2,1を同じペアとして扱いたい場合、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

上記の@mesziasの回答に触発された

15
StuartQ

これにより、例として示した結果が得られます。

SELECT DISTINCT a, b
FROM pairs

この方法で使用できるタプルをフィルタリングする場合:

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

良い点は、group byを使用する必要がないことです。

4
meszias

個別のペアのcountだけが必要な場合。

それを行う最も簡単な方法は次のとおりですSELECT COUNT(DISTINCT a,b) FROM pairs

以前のソリューションではすべてのペアがリストされていたため、2番目のクエリを実行してそれらをカウントする必要がありました。

0
adam