把一个数列放在一起,在多个列中,下面是系列。我们需要解决这个问题,Postgres。每一行都有逗号分隔的值。
问题出在这里。当我有一组串连的值时,它们是分隔的逗号。我需要根据这些组中的相关数字对它们进行分组。
例如。如果我们有1,3,它会和1,2,3,4聚在一起。
1,18将与1,2,3,4,18组合在一起,因为小组中有1。排在第一位的2人将减少到1,2,3,4人。
基本上,我所要做的就是将分隔的逗号行组合在一起,如果匹配任何其他数字组的1,那么合并这些数字,如果其他数字中的任何一个是匹配的。
IDS
-------------
2
1,3
1,2,3,4
1,18
1,4
5,6
5,6,7,8
5,7
1,3
10,11,12
10,13
13,14
10
6,22当你组织他们的时候,
然后,查询将返回这样的值。以下是基于上述数字的合并数字列表。产出=
IDS
-------------
1,2,3,4,18
5,6,7,8,22
10,11,12,13,14一个简单的例子。
如果你有一个清单
1,2 1,3 4,5 5,6
查询将返回
1,2,3
和4,5,6
因为1和1是相似的,5和5是相似的,所以它们合并了。
发布于 2021-08-16 14:23:47
我不确定我是否理解您的问题,但是如果您想从字符串中删除重复项,您可以尝试如下:
select array_to_string(array_agg(x), ',') as res from (
select distinct row_number() over () as n
, unnest(string_to_array(ids, ',')) as x
from t
) as tt
group by n;https://dba.stackexchange.com/questions/298093
复制相似问题