余七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 想问一下树莓派接上显示屏后出现如图所示画面,是什么问题导致的
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
  • ¥500 火焰左右视图、视差(基于双目相机)
  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号