2017-01-22 3 views
3

2つの列(X、Y)からなるテーブルから別のペア(x​​、y)を見つける必要があります。 列内で繰り返される数値は、結果セットに含めてはいけません。Distinct pairs MySQL

表:

X Y 
1 2 
2 3 
3 4 
4 4 
5 2 
5 6 
7 9 

結果セット:

X Y 
2 3 
7 9 

5は、質問をXに繰り返し、Yで2,4ので、彼らは、対応するYとペアを形成しないとX. インタビューで私に尋ねられた。解決策を見つけることができません。これについての質問が必要です。助けてください!

+0

@Strawberryは、なぜあなたはこれに答えないのですか? –

+0

@TimBiegeleisen大丈夫です。 – Strawberry

答えて

4
SELECT X, Y 
FROM yourTable 
WHERE X IN (SELECT X FROM yourTable GROUP BY X HAVING COUNT(*) = 1) AND 
     Y IN (SELECT Y FROM yourTable GROUP BY Y HAVING COUNT(*) = 1) 

@strawberryがジョイン使ってこれを行う方法を発見したように見えますが、私の頭に浮かんオプションは、単純に各一度だけ表示されXY値を見つけるために、非相関サブクエリを使用していましたそれぞれの列。次にWHERE句を使用して、XYの値がこれらのセットに含まれることを確認してください。

1

例えば:

SELECT DISTINCT a.* 
      FROM my_table a 
      LEFT 
      JOIN my_table b 
      ON b.x = a.x 
      AND b.y <> a.y 
      LEFT 
      JOIN my_table c 
      ON c.y=a.y 
      AND c.x <> a.x 
      WHERE b.x IS NULL 
      AND c.x IS NULL;