2016-10-13 7 views
1

私はpostgresqlで同じクエリに参加する必要があります。つまり、私はcolumn1 - column2を含む行とcolumn2 - column1を含む行を望んでいません。同じクエリを結合するときに重複する結果を防ぐpostgresql

例:

WITH q AS 

(...) 

SELECT q1.title AS title1, q2.title AS title2 
FROM 
    q AS q1 
    INNER JOIN 
    q AS q2 USING(id) 
WHERE q1.title != q2.title 

EDIT:複数のタイトルを想定すると、同じID(名前の悪い選択の一種)によって認識することができ

だから、qは2つの列があり、定義済みのクエリ、です、 "title"と "id"である。それらを組み合わせることで、この方法は、論理的に私にこれらの結果を提供します:

title1 -- title2 

x1 -- y1 

y1 -- x1 

... 

xn -- yn 

yn -- xn 

などをしかし、私は唯一のxi -- yiセット(0 < i <= n)を必要としています。

これを行うにはどうすればよいでしょうか?あなたは `グループBy`を使用することはできませんなぜ

+0

ため!=を変更しますか? – Hrabosch

+0

が表示される可能性があります。だから、私は持っている可能性があります x - y - id = b | x - z - id = b | y - z - id = b これらの結果はすべて必要です。もちろん、私はグループによって何かが間違っていない限り、もちろん – edgelord

+0

いずれの方法でも、私はこれらのペアをすべて具体的に考える必要があると考えてグループを考えるとは思わない。 – edgelord

答えて

2

だけ<

WHERE q1.title < q2.title 
+0

動作するようです。コンパイラーがここのリストの位置を見ているからですか?私はそれを知らなかった。ありがとう! – edgelord

関連する問題