1

私はPostgreSQLでこのクエリを持っています:

select p1.id, p2.id, p1.title, p2.title 
from publication "p1", publication "p2"
where p1.title = p2.title and p1.id <> p2.id

問題は、必要以上のデータが返されることです。

id    id   title          title  
3456  5678 Ulysses        Ulysses  
5678  3456 Ulysses        Ulysses  
234,  345  Das Kapital    Das Kapital  
345   234  Das Kapital    Das Kapital 

行1と3、または行2と4だけが必要です。

4

3 に答える 3

3
select p1.id, p2.id
 , p1.title, p2.title
from publication p1
    , publication p2
where p1.title = p2.title
  and p1.id < p2.id -- tie breaker
  ;

または、はるかにヒッパーのJOIN構文を使用します。

SELECT p1.id, p2.id
 , p1.title, p2.title
FROM publication p1
JOIN publication p2 ON p1.title = p2.title
                   AND p1.id < p2.id -- tie breaker
  ;
于 2013-03-20T18:55:39.043 に答える
0

私はあなたのシナリオを実装するための簡単なアイデアを持っています。

select p1.id, p2.id, p1.title, p2.title , sum(p1.id + p2.id) as temp
from publication "p1", publication "p2" group by temp
于 2013-03-28T05:09:46.507 に答える
0
select DISTINCT p1.id, p2.id, p1.title, p2.title 
from publication "p1", publication "p2"
where p1.title = p2.title
于 2018-05-31T11:30:34.390 に答える