-1
SELECT * FROM テスト;
 | | b
---+---
 1 | 5
 4 | 1
 2 | 5
 3 | 3
 1 | 1
(5行)

「a」列のすべての出力値が異なり、「b」列のすべての出力値も異なるように、このようなクエリを作成するにはどうすればよいですか。

たとえば、上記のクエリの有効な結果セットは次のとおりです。

1 | 5
 4 | 1
 3 | 3

次のものも有効です。

4 | 1
 2 | 5
 3 | 3

できるだけ多くの結果を見つけることをお勧めしますが、必須ではありません。
それを行う最善の方法は何ですか?

ありがとう。

4

2 に答える 2

1

これも正しい出力を与えるはずだと思います: SELECT a, MIN(b) as b FROM test GROUP BY a Intersect SELECT min(a) as a, b FROM test GROUP BY b;

編集:これを試してください:

Select MIN(t1.a), t1.b from (SELECT a, MIN(b) as b FROM test GROUP BY a) t1 GROUP BY t1.b
于 2012-10-13T20:30:30.860 に答える
1

自分で解決策を見つけました!:)

a) 「テスト」テーブルに id 列を追加
b) SQL クエリ:

と
    t1 AS ( SELECT a, MIN(id) as id FROM test GROUP BY a ),
    t2 AS ( SELECT b, MIN(id) as id FROM test GROUP BY b )
    SELECT * FROM テスト
    WHERE id IN (SELECT id FROM t1) AND id IN (SELECT id FROM t2);

結果:

ID | | | b
----+----+---
  6 | 1 | 5
  7 | 4 | 1
  9 | 3 | 3
于 2012-10-13T20:22:46.697 に答える