sql - 基于字符串包含的 SQL 连接
问题描述
我有以下 SQL 表:
COL_A || COL_B ||
=========================
aa || 1 ||
aa || 2 ||
aa.bb || 3 ||
aa.bb.cc || 4 ||
aa.bb.cc || 5 ||
dd || 6 ||
dd.ee || 7 ||
作为 SELECT 查询的一部分,我想按 Col_A 的值进行分组,并根据 Col_A 中的值作为彼此的子集连接 Col_B 中的值。这意味着,如果 Col_A 的值包含在 Col_A 的另一个值中/等于 Col_A 的另一个值,则超集/相同 Col_A 值的对应 Col_B 应该连接在一起。
期望的结果:
COL_A || COL_B ||
======================================
aa || [1, 2, 3, 4, 5] ||
aa.bb || [3, 4, 5] ||
aa.bb.cc || [4, 5] ||
dd || [6, 7] ||
dd.ee || [7] ||
解决方案
join
您可以使用 self array_agg
:
select t1.col_a, array_agg(distinct t2.col_b)
from vals t1 join vals t2 on t2.col_a ~ t1.col_a
group by t1.col_a order by t1.col_a
推荐阅读
- graphql - GraphQL查询访问数组中的第一项?
- ios - Swift - AVCaptureSession,如何捕获输出
- vba - 如何用 powerapps 中 Combobox 值的变量提取替换请求日期
- android - 有没有办法循环 URL 以在 android studio 中获取 JSON 数据?
- mysql - 使用 sql 查询将文件移动到另一个目录
- c# - 如何使用 HttpClient C# 下载多个文件?
- javascript - .map() 将错误的值映射到我的标题标签
- swift - 在 Swift 中单击时为集合视图单元设置动画
- github - GitHub 存储库未在 Google 搜索中列出 - 无法提交 url
- c# - 无法使用 VSCode 创建新的仪表项目