2011-04-28 12 views
0

すべての組み合わせをせずに同様の行を見つけますコード列にUNIQUE制約を追加します。SQLは、私は、このSQLテーブルを持っている

私はこのクエリを持っている:

私にこの結果セットを返すされ
select distinct 
    t1.code, t1.id, t1.description, t2.id, t2.description 
from 
    data t1, data t2 
where 
    t1.code = t2.code and t1.id != t2.id 
order by t1.code 

A 5 ABBA 1 AAAA 
A 3 AGAIN 1 AAAA 
A 1 AAAA 5 ABBA 
A 1 AAAA 3 AGAIN 
A 3 AGAIN 5 ABBA 
A 5 ABBA 3 AGAIN 

私はすでに記載されている違いの組み合わせを廃棄するようにクエリを微調整することができますどのように? は、この例では、私はこれだけの行を持つようにしたい:

A 1 AAAA 3 AGAIN 
A 1 AAAA 5 ABBA 
A 3 AGAIN 5 ABBA 

答えて

2

あなたは、例えば、一つだけの行のそれぞれのカップルのを取ることができる:

select distinct 
    t1.code, t1.id, t1.description, t2.id, t2.description 
from 
    data t1, data t2 
where 
    t1.code = t2.code and t1.id < t2.id 
order by t1.code 
+0

おかげで多くのことを、それは良いトリックです...しかし、ID以外のフィールドに基づいた比較の場合はどうすればよいですか? – Guillaume

+0

不等号演算子を他のデータ型とともに使用できます。もう1つの問題は、同じコードを持つ2行以上の行がある場合です。この場合、より複雑なクエリが必要になることがあります。 –

関連する問題