【发布时间】:2023-03-21 19:55:01
【问题描述】:
假设有一个表 foo 列 bar 带有逗号分隔值 ('a,b' , 'a,b,c' , 'A B C D' , 'd,e') 如何选择最大的组合并排除该组合中包含的所有子集(最大的一个):
上面数据集的例子,结果应该是:
('a,b,c,d' , 'd,e' ) 和前两个实体 ('a,b', 'a,b,c') 被排除在外,因为它们是 ('a,b,c,d') 的子集。
考虑到逗号分隔字符串中的所有值都按字母顺序排序
我尝试了以下查询,但结果似乎离我需要的有点远:
select distinct a.bar from foo a inner join foo b
on a.bar like '%'|| b.bar||'%'
and a.bar != b.bar
【问题讨论】:
-
('a,b' , 'a,b,c' , 'a,b,c,d' , 'd,e')是一行一个列中的单个值吗?
标签: sql postgresql