余七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 软件定义网络mininet和onos控制器问题
  • ¥15 微信小程序 用oss下载 aliyun-oss-sdk-6.18.0.min client报错
  • ¥15 ArcGIS批量裁剪
  • ¥15 labview程序设计
  • ¥15 为什么在配置Linux系统的时候执行脚本总是出现E: Failed to fetch http:L/cn.archive.ubuntu.com
  • ¥15 Cloudreve保存用户组存储空间大小时报错
  • ¥15 伪标签为什么不能作为弱监督语义分割的结果?
  • ¥15 编一个判断一个区间范围内的数字的个位数的立方和是否等于其本身的程序在输入第1组数据后卡住了(语言-c语言)
  • ¥15 Mac版Fiddler Everywhere4.0.1提示强制更新
  • ¥15 android 集成sentry上报时报错。