MySQL将以逗号分隔的数据分成多行,再合并为一行

Power Query-实现将多行按照编号合并到一行 参考文章: https://www.cnblogs.com/lizardbi/p/PowerBI-PowerQuery.html 目标: 第一张图是原始数据,第二张图是想要实现的效果(实际中数据量很大,可能几万行数据) 1.将数据转换成表格 CTRL+A 快速全部选中数据 CTRL+T 快速转换成表格 选中数据之后,数据—从表格——进入PoweQuery界面 2. 主页——分组依据——按“医院编号”分; 新列名:随意写 ;操作:选择“所有行” 3. 确定后如下图 4. 添加列——自定义列—— 阅读详情

最近遇到个这样的问题,MySQL中的【影片表】中 [演员列] 的内容是用逗号分隔的多个id存储的(例:4356,9691,11337),然后需要把他换成id对应的演员名字(例:屈菁菁,王太利,肖央)

看起来很复杂,其实只要把问题拆分一下就会非常简单

分为三步

第一步:把逗号分隔的多个id从一行分隔成多行

第二步:把多行id与字典表进行关联,拿到对应值

第三步:把多行对应值捏成一行

具体写法:

第一步:拆分,只留下可以关联的列和拆分之后的列

SELECT
    fi.id, -- 可以关联的列id
    substring_index( substring_index( fi.film_star, ',', b.help_topic_id + 1 ), ',', - 1 ) film_star  -- 被拆分的列
FROM
    `film_info` fi
    JOIN mysql.help_topic b ON b.help_topic_id < ( 
        length( fi.film_star ) - length( REPLACE ( fi.film_star, ',', '' )) + 1 
    ) 

第二步:把被拆分的列与字典表关联,拿到对应值

select 
    a.id, -- 可以关联的列
    a.film_star_id, -- 被拆分的列
    actor.actor_name -- 需要拿到的值
from (
    select 
        fi.id, 
        substring_index(substring_index(fi.film_star, ',', b.help_topic_id + 1), ',', -1) film_star_id
    from `film_info` fi join mysql.help_topic b
    on b.help_topic_id < (length(fi.film_star) - length(replace(fi.film_star, ',', '')) + 1)
) a left join actor on actor.id = a.film_star_id

第三步:按照id,把拿到的值多行变一行

select 
    a.id film_id,
    group_concat(a.film_star),
    group_concat(actor.actor_name) film_star -- 拿到的值用逗号拼接起来
from (
    select 
        fi.id, 
        substring_index(substring_index(fi.film_star, ',', b.help_topic_id + 1), ',', -1) film_star
    from `film_info` fi join
                mysql.help_topic b
                on b.help_topic_id < (length(fi.film_star) - length(replace(fi.film_star, ',', '')) + 1)
    order by fi.id
) a 
left join actor on a.film_star = actor.id
group by a.id -- 按id分组

第四步:大功告成!

用id去随便关联吧!

如果觉得还不错,请点赞收藏支持我一下,你的鼓励是我最大的动力!

利用逗号拆分行,逗号拼接行 mysql 利用逗号拆分行,逗号拼接行 阅读详情

相关推荐

SQL Server 拆分逗号分隔的字段为多条数据

Expression1是要到expression2中寻找的字符,start_location是CHARINDEX函数开始在expression2中找expression1的位置。需求:将TargetEquipmentModelIds 逗号分隔的字段拆分为多条数据equipment_model_id。字符数据的表达式character_expression 可以是常量、变量,也可以是字段或二进制字段。拆分逗号分隔的字段为多条数据的应用场景: 数据处理,根据用户名数组查询用户id,进行权限配置。

专注于计算机研发知识和资讯分享 5845

mysql使用逗号分隔的一行数据转多行数据

【代码】mysql使用逗号分隔的一行数据转多行数据。

pscool的博客 2万+

用AI助手Cursor轻松自动生成流程图

通过 Cursor + Mermaid,我们可以快速、准确地自动生成流程图,上面演示的例子部分流程图可能比较丑,我们可以通过流程图软件导入Mermaid代码,然后手动进行微调就可以了,如果你对美观要求不是特别多,可以直接用,这将极大地提升代码可视化和架构设计的效率。

呱牛 Just do IT 1936

mysql一行逗号分割的数据分解为多行

在 MySQL 中,你可以使用函数 REPLACE 和 SUBSTRING_INDEX 来将一行逗号分隔的数据分解为多行。 例如,假设你有一个表,其中包含一列 items,该列包含逗号分隔的字符串,如下所示: +----+---------------------+ | id | items | +----+---------------------+ | 1 | i...

weixin_35751194的博客 5484

从理论到实践:笛卡尔空间阻抗控制的实现挑战与变体解析

本文深入探讨了笛卡尔空间阻抗控制的核心原理、工程实现中的五大挑战及经典变体实战解析。通过详细的数学建模和实际案例分析,揭示了阻抗控制在工业机器人、医疗设备等领域的应用价值,特别是在力感知精度、动力学模型校准和实时计算等方面的关键技术突破。

weixin_30952535的博客 448

从外包到转正:一个华为OD亲历者的真实工作体验与避坑指南

本文分享了一位华为OD员工从外包到转正的真实经历与实用建议。通过详细解析华为OD的日常工作、转正核心指标、机试备考技巧及职场突围策略,为读者提供了一份全面的避坑指南。特别针对机试E卷的高频考点和刷题方法,给出了具体的数据分析和实战经验。

weixin_33686714的博客 690

mysql逗号拼接的列拆分为多行-百分百实测有效

mysql逗号拼接的列拆分为多行-百分百实测有效

振云博客 6669

Qualcomm平台下基于QSEE的指纹识别方案移植之四TA移植

本文只介绍TA移植的过程,不做技术分析,关于TA开发另做记录。 一、TA介绍 TA,Trusted application 可信应用,是运行于QSEE中的可执行程序。 指纹TA文件如下,形式一般是 xxx.mbn; xxx.b0 ~ xxx.b6, xxx.flist, xxx.mdt; xxx.mbn 可以理解为其它几个文件的集合,签名的时候用的就是这个文件,签完名之后,有对应的工具将它...

梦路遥 7547

【MySQL将字段值逗号分隔的数据分成多行,更新后,再合并为一行】

【MySQL将字段值逗号分隔的数据分成多行,更新后,再合并为一行】

m0_49762804的博客 1347

第21章—技术管理篇(上):身为技术人该怎样带好团队并做好管理者

上节讲了职业规划和学习提升这两个话题,随着职业规划的不断落地,或者自己能力的不断提升,大家也会逐渐被提拔成“职级更高”的人。企业规模扩张时,员工数量也会变多,意味着Boss需要更多的人来辅助管理,而管理者会从外部招聘吗?也许会,但大多企业更喜欢从内部选拔,毕竟人的天性更希望找的人值得信赖。此时,一些能力不错、做事靠谱的老员工,就会被“赶上”管理者的位子。作管理不难,但想要“”就需要一定情商。

运维老生常谈 1364

BOSS直聘数据采集、解析处理、分析与可视化实战

招聘和求职是一对永恒的话题,不论什么时候都有招聘或者是求职的需求,找不找得到工作可能最主要的就是匹配度是否高,待遇福利是否诱人,如今互联网的快速发展,找工作的方式早已发生了翻天覆地的变化,从以往的面对面形式的招聘简历投递和面试方式,变成了电子简历网络直接投递、远程面试录用的形式,便捷性大大提升,需求的快速增长,促生了一批互联网招聘类的企业,诸如:51job、BOSS直聘、拉勾网等等,为了能...

Together_CZ的博客 9021

mysql中将多行数据合并成一行数据

mysql中将多行数据合并成一行数据 mysql中将多行数据合并成一行数据 一个字段可能对应多条数据,用mysql实现将多行数据合并成一行数据 例如:一个活动id(activeId)对应多个模块名(modelName),按照一般的sql语句: ...

3314

RH850从0搭建Autosar开发环境【1】- 如何创建Davinci Configurator配置工程

当我们在公司接触Autosar开发环境时,基本都是完整的Davinci Configurator的配置工程,我们只能修修补补。 从本章开始将手把手搭建Rh850基于Vector公司Davinci Configurator的autosar配置工程。主要涉及到OS,COM,DCMM,NVM,BSWM,ECUM等基本模块,包括Vlink,memap使用,XCP标定的实现等。基本是实现一个基础版的项目开发。包括后期的GreenHills编译问题处理,生成最终的Hex文件。

weixin_42412049的博客 1万+

各数据库SQL查询结果多行数据合并成一行

各数据库SQL查询结果多行数据合并成一行

qq_41512902的博客 4万+

「深度学习之优化算法」笔记(二)优化算法的分类

但是由于生物的局限性,人们所创造出的算法也会有局限性:我们所熟知的生物都生存在三维空间,在这些环境中,影响生物生存的条件比较有限,反应到算法中就是这些算法在解决较低维度的问题时效果很好,当遇到超高维(维度>500)问题时,结果可能不容乐观,没做过实验,我也不敢乱说。当然,他们的目的不是在最佳狩猎位置集合,他们的目的是在过去的途中看是否能发现更加好的狩猎位置,去往已经到过的狩猎地点再次狩猎是没有意义的,因为每个位置获取食物的难易程度是固定的。如果他们的策略是“不跟随最优解”,那么他们的策略是什么呢?

quanzhan_King的博客 1370

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

SQL Server 多行合并成一行与一行拆分成多行

多行合并成一行(逗号隔开): 原表结构: 合并后的结果: 建表及插入数据: -- 创建测试用表rows_to_row create table rows_to_row( name char(5) not null default '', hobby varchar(20) not null default '' ) -- 向测试表添加数据 insert into rows_to...

Backcanhave7 8893

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

sqlserver函数多行数据合并成一行

多行数据合并成一行

weixin_43803387的博客 1万+

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

mysql怎么把两个表格的数据合并成一行_mysql中将多行数据合并成一行数据

地址:https://www.cnblogs.com/shoshana-kong/p/11147690.html一个字段可能对应多条数据,用mysql实现将多行数据合并成一行数据例如:一个活动id(activeId)对应多个模块名(modelName),按照一般的sql语句:1 SELECT am.activeId,m.modelName2 FROM activemodel am3 JOIN m...

weixin_31210347的博客 1314

MySQL多行数据合成一行函数GROUP_CONCAT

mysql GROUP_CONCAT mysql多行数据逗号分隔合成一行

二月十六的博客 5883

mysql屏幕字段一行显示_[SQL]把同一字段里的多行数据用一行显示

declare @t table(id int,num int)insert @tselect , union allselect , union allselect ,--select * from @t----查询declare @idList varchar(),@numList varchar()set @idList = ''set @numList = ''select@idList ...

weixin_39569051的博客 1629

mysql多行数据用逗号拼接返回一行

先说解决办法,这里使用的是 GROUP_CONCAT 函数,先来实例: 这样返回的多行数据会合并成一行,并且用逗号分割返回. 一般与group by 分组一起使用,如果不分组默认返回一行 而分组后会把相同分组类型的数据返回一行,并且可使用分割符号分割,去重,排序等操作这里是按照部门分组,这样同一个部门的人会返回一行并且用逗号分割 ps:开发中会有很多种需要合并结果集的情况,比如要查询小明这个同学所有科目分数返回一行,这样使用来达到返回数据的要求....

qq_42200473的博客 3880

MySQL多行合并逗号分隔

图一 图二 多行合并 把 图一 的展示效果转换成 图二 的展示效果 1、创建成绩表(GRADE) CREATE TABLE GRADE ( ID int NOT NULL AUTO_INCREMENT, USER_NAME varchar(20) NOT NULL, COURSE varchar(20) NOT NULL, COURSE_CODE varchar(20) NOT ...

weixin_45739720的博客 4716

mysql-group_concat函数,将多行记录合并为一行

前景: 今天做一个需求 把A表的ip字段数据更新到B表里面的ip字段; A表是如果有两个IP地址就存入的是两条记录,例如:(id ip )111 10.1.1.1 111 10.1.1.2 B表是如果有两个IP地址存的是一条记录且用","分隔开;例如: (id ip )111 10.1.1.1,10.1.1.2 涉及:首先要把A表的两条记录合并为一条,且用","隔开,然后直接更新到B表 要用到mys...

sunshinezx8023的博客 4261

mysql大量数据合并_mysql多行数据合并为一行

SELECT GROUP_CONCAT(md.data1) FROM DATA md,contacts cc WHERE md.conskey=cc.id AND md.mimetype_id= 5 AND md.user_id=17:利用函数:group_concat(),实现一个ID对应多个名称时,原本为多行数据,把名称合并成一行,如|1 | 10,20,20|本文通过实例介绍了MySQL中的...

weixin_33655208的博客 1035

mysql 数据合并_mysql 将多行数据合并成一行

1 SELECT am.activeId,m.modelName2 FROM activemodel am3 JOIN model m4 ON am.modelId = m.modelId5 ORDER BY am.activeId 修改过后的sql语句,查询后如图2所示:1 SELECT am.activeId,GROUP_CONCAT(m.modelName SEPARATOR ',') m...

weixin_35225039的博客 1567
上一篇: 索引是什么?为什么数据库优化会用到?
下一篇: hive库concat_ws函数实现 一行转多行,多行转一行
Lockin C
博客等级 码龄7年 792粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值