2016-07-09 31 views
0

我有一些大的(121萬行),表(ID BIGINT,BIGINT的link_to):如何在大表postgresql中逐列輸出組合值?

id | link_to 
---|-------- 
1 | 4 
2 | 4 
3 | 4 
5 | 7 
6 | 7 

而且我需要的link_to值交聯而自ID值。 所以它應該是ID值(1,2,3)與相同link_to值(4)之間的所有組合,並對所有link_to值重複。

在結果應該是:

id | link_to 
---|-------- 
1 | 2 
1 | 3 
2 | 1 
2 | 3 
3 | 1 
3 | 2 
5 | 6 
6 | 5 

這個選擇我將輸入(帶ON衝突做避免dublicate唯一索引(ID,的link_to)NOTHING)在同一個表。 我試着玩GROUP BY link_to - > array_agg(id) - > unnest - > WITH ORDINALITY,但沒有成功的結果...

任何其他解決方案(CTE,窗口函數,自定義函數)?

回答

1

你似乎在尋找一個自聯接:

select b1.id, b2.id 
from bigtable b1 join 
    bigtable b2 
    on b1.link_to = b2.link_to and b1.id <> b2.id; 
+0

賓果!十分感謝! http://www.azquotes.com/quote/503289 –

相關問題