2016-12-28 55 views
1
Table A 

id name keywords 
1 Obj1 a,b,c,austin black 
2 Obj2 e,f,austin black,h 
3 Obj3 k,l,m,n 
4 Obj4 austin black,t,u,s 
5 Obj5 z,r,q,w 

我需要獲取那些包含相似類型關鍵字的記錄。因此,對於表中的結果必須是:Postgresql:獲取具有相似列值的記錄

Records: 
1,2,4 

由於記錄1,2,4是其一個或一些其他關鍵字匹配與至少任何其他關鍵字。

+2

正如其他人可能會發表評論,你爲什麼要存儲非標準化CSV格式的關鍵字數據? –

+0

@TimBiegeleisen是的,我知道這一點。但需要將其存儲爲其他一些依賴項。對於上面的問題,我想到將一個函數寫入數據庫本身,它會遍歷每個關鍵字並與其他關鍵字匹配。但這不是一個有效的解決方案。試圖通過解決關鍵字列來解決任何疑問 –

回答

2

您可以轉換「CSV」到一個數組,然後使用Postgres的陣列功能:

select * 
from the_table t1 
where exists (select * 
       from the_table t2 
       where string_to_array(t1.keywords, ',') && string_to_array(t2.keywords, ',') 
       and t1.id <> t2.id); 
相關問題