Postgresql: получать записи, имеющие похожие значения столбцов
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
Мне нужно получить те записи, которые содержат похожие ключевые слова. Следовательно, результат для таблицы должен быть:
Records:
1,2,4
Так как записи 1,2,4 - это те, у кого какое-либо или другое ключевое слово соответствует хотя бы любому другому ключевому слову.
Ответы
Ответ 1
Вы можете преобразовать "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);