Postgresql: 获取具有相似列值的记录

15 浏览
0 Comments

Postgresql: 获取具有相似列值的记录

表A

id 名称 关键词

1 Obj1 a,b,c,奥斯汀黑人

2 Obj2 e,f,奥斯汀黑人,h

3 Obj3 k,l,m,n

4 Obj4 奥斯汀黑人,t,u,s

5 Obj5 z,r,q,w

我需要获取那些包含类似类型关键词的记录。因此,表的结果应为:

记录:

1,2,4

因为记录1,2,4是其中一些或其他关键词与至少任何其他关键词匹配的记录。

0
0 Comments

Postgresql: 获取具有相似列值的记录

在PostgreSQL中,有时我们需要查找具有相似列值的记录。一个常见的场景是,我们有一个包含关键词的列,我们想要找到具有相同关键词的记录。本文将介绍一个解决此类问题的方法。

我们可以将"csv"转换为一个数组,然后使用PostgreSQL的数组函数来实现。下面是一个示例查询代码:

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

以上代码中,`the_table`是我们要查询的表名,`keywords`是包含关键词的列名,`id`是记录的唯一标识符。

在这个查询中,我们首先使用`string_to_array`函数将关键词列的值转换为一个数组。然后,我们使用`&&`操作符来判断两个数组是否有交集,即是否存在相同的关键词。最后,我们使用`exists`子查询来检查是否存在其他具有相同关键词但不同id的记录。

通过这种方法,我们可以轻松地获取具有相似列值的记录。这对于进行数据分析、数据清洗等任务非常有用。

希望本文对你理解PostgreSQL中获取具有相似列值的记录的方法有所帮助。如有任何疑问,请随时留言。

0