2016-12-28 15 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); 
関連する問題