余七165 2022-02-15 17:41 采纳率: 100%
浏览 48
已结题

对于数据之间有逗号的数据应该怎么进行表连接查询(SQL)

在进行表连接查询时发现,有些数据是用逗号连接起来的 不知道该怎么进行表连接查询
例:
原始表数据
id 部门编码
1 23
2 37
3 231
4 23,37
5 37,231
要连接查询的表
id 部门编码对应值
23 A部门
37 B部门
231 C部门

我的SQL:
select a.id,b.部门编码对应值
from
(select id,部门编码
from 原始表数据) a
left join
(select id,部门编码对应值
from 要连接查询的表) b on a.部门编码=b.id

查出来的数据
id 部门编码
1 A部门
2 B部门
3 C部门
4
5

我想要的数据
id 部门编码
1 A部门
2 B部门
3 C部门
4 A部门,B部门
5 B部门,C部门

  • 写回答

2条回答 默认 最新

  • DarkAthena ORACLE应用及数据库设计方案咨询师 2022-02-15 17:51
    关注

    是用的什么数据库?
    你这个数据处理的思路应该是,对于逗号分割的字段内容,转换成列,然后再去进行表连接。但是不同数据库的处理方式不一样


    postgresql,可以用unnest结合string_to_array,将指定字符串按指定分隔符转成一列

    img

    然后再去join,最后再聚合就行了

    select A.ID,LISTAGG(部门编码对应值,',') WITHIN GROUP (ORDER BY 部门编码对应值) from 
    (select id, unnest(string_to_array(部门编码,',')) 部门编码 from 原始表数据 ) a
    left join
    (select id,部门编码对应值
    from 要连接查询的表) b on a.部门编码=b.id
    GROUP BY A.ID
    ;
    

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 2月24日
  • 已采纳回答 2月16日
  • 创建了问题 2月15日

悬赏问题

  • ¥15 目标检测项目无法读取视频
  • ¥15 GEO datasets中基因芯片数据仅仅提供了normalized signal如何进行差异分析
  • ¥15 小红薯封设备能解决的来
  • ¥100 求采集电商背景音乐的方法
  • ¥15 数学建模竞赛求指导帮助
  • ¥15 STM32控制MAX7219问题求解答
  • ¥20 在本地部署CHATRWKV时遇到了AttributeError: 'str' object has no attribute 'requires_grad'
  • ¥15 vue+element项目中多tag时,切换Tab时iframe套第三方html页面需要实现不刷新
  • ¥50 深度强化学习解决能源调度问题
  • ¥15 一道计算机组成原理问题