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);