2016-03-30 3 views
1

のペアが指定されたフィールドのの行を返すSQLクエリを作成するにはどうすればよいですか?応答のUNIQUE * pairs *を返すSQLクエリ

例えば、

(1, 'Bill Smith', '1 Main Street'), 
(2, 'Harriet Jones', '2 Cherry Street'), 
(3, 'Bill Smith', '1 West 125th Street'), 
(4, 'Susan Smith', '1 Main Street') 

私は一意の名前/アドレスのペアを選択したい、と(この例では)取り戻すテーブルに

(1, 'Bill Smith', '1 Main Street'), 
(2, 'Harriet Jones', '2 Cherry Street'), 
(3, 'Bill Smith', '1 West 125th Street'), 
(4, 'Susan Smith', '1 Main Street'), 
(5, 'Bill Smith', '1 Main Street') 

を与えられたこの例では、

でも利用可能です

http://sqlfiddle.com/#!9/3d4b4/1

ありがとうございます。

答えて

1

あなたはあなたが名前/アドレスペアごとにグループを作成するためにGROUP BYを使用して、グループごとに最小のIDを取得することができます

select distinct name, address from your_table ; 
+0

これは元のポスターが必要とするものだと思います。 – scaisEdge

1

DISTINCTでクエリを実行できます。そのためには、データ列のみを選択する必要があります。

編集:ああ、2番目のテーブルは、望ましい結果でした.UNIONを忘れてしまいました。

+0

例を共有できますか? –

+0

完全なクエリについての回答があるので気にしない; –

+1

十分に公正。私はこの仕事が実際よりももっと複雑であることを自分自身に納得させました。 –

1

を必要とする価値のSELECT DISTINCTを使用することができます。次に、これらのIDを持つ行を選択するだけです。

SELECT id, name, address 
FROM testThing 
WHERE id IN (
SELECT MIN(id) FROM testThing GROUP BY name, address 
); 

あなたがIDを選択したくない場合は、それはscaisEdgeは彼の答えに示したようだけで、他のフィールドにDISTINCTを使用するように簡単です。

+0

ありがとうございます。私のアプリケーションは将来的にはより複雑になるので、このテクニックは役に立ちそうです。 –

関連する問題