MySQL字段内容拆分及合并

1. 创建测试表及数据

-- 创建一张tb_stu表
CREATE TABLE tb_user(
id INT PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(10) COMMENT '人名',
c_no VARCHAR(64) COMMENT '持剑ID,以逗号分隔'
);
INSERT INTO tb_user(NAME,c_no) VALUES('蘧伯玉','1,3,5,7');
INSERT INTO tb_user(NAME,c_no) VALUES('高渐离','1,2,4,8,5');
INSERT INTO tb_user(NAME,c_no) VALUES('樗里疾','2,9');
INSERT INTO tb_user(NAME,c_no) VALUES('澹台灭明','1,2');
INSERT INTO tb_user(NAME,c_no) VALUES('钟子期','1,2,6,8,7,3,5');
INSERT INTO tb_user(NAME,c_no) VALUES('柳下惠','2,4,3,5');
INSERT INTO tb_user(NAME,c_no) VALUES('百里奚','1,9');
INSERT INTO tb_user(NAME,c_no) VALUES('阚止','1,6,7');
INSERT INTO tb_user(NAME,c_no) VALUES('霍去病','1,8,5');
INSERT INTO tb_user(NAME,c_no) VALUES('慕容白曜','1,2,3,4,5,7');
INSERT INTO tb_user(NAME,c_no) VALUES('鱼幼薇','7,8,9');
INSERT INTO tb_user(NAME,c_no) VALUES('宋玉','6,5');
-- 创建一张剑名
create table tb_sword(
id int primary key AUTO_INCREMENT,
c_name varchar(4)) comment '剑名';
insert into tb_sword(c_name)values('轩辕');
insert into tb_sword(c_name)values('湛卢');
insert into tb_sword(c_name)values('赤霄');
insert into tb_sword(c_name)values('太阿');
insert into tb_sword(c_name)values('七星龙渊');
insert into tb_sword(c_name)values('干将');
insert into tb_sword(c_name)values('莫邪');
insert into tb_sword(c_name)values('鱼肠');
insert into tb_sword(c_name)values('纯钧');

两张表内容如下:

tb_user

MySQL字段内容拆分及合并

tb_sword

MySQL字段内容拆分及合并

2. 数据拆分及合并

需求: 使用一条SQL获得tb_user表中每个人持有的剑名(剑名用“|”分隔),即得到如下结果

MySQL字段内容拆分及合并

拆解需求:

1) 先将tb_user表中的c_no按逗号拆分

2)将拆分后c_no中的各个id与tb_sword中的id关联,获取剑名

3) 最后将每一个user对应的剑名合并成一个字段

分段SQL如下:

步骤1:

每一个user的c_no按逗号拆分为对应的c_id,此方法需借助于mysql.help_topic表

SELECT a.id,a.name,a.c_no, SUBSTRING_INDEX( SUBSTRING_INDEX( a.c_no, ',', b.help_topic_id + 1 ), ',',- 1 ) c_id
FROM tb_user a JOIN mysql.help_topic b ON b.help_topic_id < ( LENGTH( a.c_no ) - LENGTH( REPLACE ( a.c_no, ',', '' ) ) + 1 )
ORDER BY a.id

结果如下:

MySQL字段内容拆分及合并

步骤2:关联获取每个id对应的剑名

SELECT a2.id,a2.name,a2.c_no,a2.c_id,b2.c_name
FROM (
SELECT a.id,a.name,a.c_no, SUBSTRING_INDEX( SUBSTRING_INDEX( a.c_no, ',', b.help_topic_id + 1 ), ',',- 1 ) c_id
FROM tb_user a JOIN mysql.help_topic b ON b.help_topic_id < ( LENGTH( a.c_no ) - LENGTH( REPLACE ( a.c_no, ',', '' ) ) + 1 )
ORDER BY a.id
) a2, -- a2表即步骤1中拆分的结果
tb_sword b2 WHERE a2.c_id =b2.id -- 关联,相当于inner join(或者join)

结果如下

MySQL字段内容拆分及合并

步骤3:

将每个人的剑名合并为1个字段显示,并用”|” 符合合并

SELECT a2.id,a2.name,a2.c_no,
GROUP_CONCAT(b2.c_name SEPARATOR '|' ) sword_name
-- SEPARATOR 指定分隔富,不加默认为逗号分隔
FROM (SELECT a.id,a.name,a.c_no,
SUBSTRING_INDEX( SUBSTRING_INDEX( a.c_no, ',', b.help_topic_id + 1 ), ',',- 1 ) c_id
FROM tb_user a
JOIN mysql.help_topic b ON b.help_topic_id < ( LENGTH( a.c_no ) - LENGTH( REPLACE ( a.c_no, ',', '' ) ) + 1 )
ORDER BY a.id) a2,tb_sword b2
WHERE a2.c_id =b2.id
GROUP BY a2.id

结果如下:

MySQL字段内容拆分及合并

实现需求

本文链接:https://www.dzdvip.com/45167.html 版权声明:本文内容均来源于互联网。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 395045033@qq.com,一经查实,本站将立刻删除。
(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023年2月18日 23:04
下一篇 2023年2月19日 23:38

相关推荐

  • 你这背景太假了是什么意思(抖音你这背景太假了是什么梗)

    部分小伙伴不是很清楚你这背景太假了是什么梗?这这其实出自视频作者“疆城阿力木”,下面就由小编给大家带来你这背景太假了梗介绍,希望能给大家带来帮助。 这背景太假了是什么梗呢?最近抖音网红梗越来越多,而“你这背景太假了”就是其中之一,那么,你这背景太假了是什么意思呢? 你这背景太假了梗出自哪里呢?下面就一起来看看吧。 你这背景太假了是什么梗 此梗是出自抖音视频作者疆城阿力木”,因为本人画风粗狂,与背景不搭调,所以网友觉得背景不真实,因此出现了此梗。 你这背景太假了是什么梗 你这背景太假了梗出自哪里(图片来源:网络) 你这背景太假了梗出自哪里 这其实出自视频作者“疆城阿力木”的直播画面,但因为他狂野的外形,使得他和后面的风景格格不入,于是就有人说:你这背景太假了,于是作者直接冲入河中证明。 你这背景太假了是什么梗 你这背景太假了梗出自哪里(图片来源:网络)   你这背景太假了梗出处介绍 这其实出自视频作者“疆城阿力木”的直播画面。 但因为他狂野的外形,使得他和后面的风景格格不入 于是就有人说:你这背景太假了,于是作者直接冲入河中证明。 以上便是小编为大家带来的你这背景太假了梗出处介绍。

    2022年7月26日
    225
  • 粗粮有哪些食物(粗粮有哪些品种)

    拥有健康的身体对我们非常重要,很多姐妹都喜欢吃各种健康的食物,但是又怕会变胖,那该怎么办呢?其实吃得好和吃得健康是可以兼得的。 今天给大家总结了25种粗粮,有红薯、白薯、芋头、紫薯、马铃薯、奶油南瓜、磨盘南瓜、红栗南瓜、贝贝南瓜、黄狼南瓜、绿豆、红芸豆、黄豆、红豆、黑豆、紫米、薏米、黑米、小米、糙米、紫玉米、糯玉米、白玉米、水果玉米、甜玉米等,这些粗粮做起来不仅好吃,而且热量相对较低。 个人比较喜欢吃红薯、紫薯、玉米、还有红豆、绿豆,既能补充营养又能满足自己的味蕾需求,太可以了! 粗粮有玉米、紫米、燕麦、荞麦、黄豆、绿豆等,其中玉米中含有丰富的膳食纤维,能够增加饱腹感,紫米富含不溶性的膳食纤维,米粒细长呈现紫色,而燕麦属于草本植物,口感较为粗糙,但每100克燕麦就有5.3-6克的膳食纤维。 有什么粗粮 1、玉米 玉米属于粗粮,玉米中富含膳食纤维,能够增加饱腹感,并且玉米中具有丰富的维生素和微量元素,养护时要将其栽种到土质疏松、土层深厚的田地中,为植株每隔3天浇一次水,促进玉米的生长。 2、紫米 紫米是粗粮,紫米属于糯米类,含有丰富的不溶性的膳食纤维和微量元素,比普通糯米更加容易吸收,但紫米对生长环境的要求较高,仅在湖南、四川、云南、湖北恩施等少数地方产出。 3、燕麦 燕麦是粗粮,燕麦是草本植物,根须坚韧,口感较为粗糙,但是每100克燕麦中就含有5.3-6克的纤维素,属于优质粗粮,注意燕麦不宜食用过多,否则会引起消化不良。

    2022年6月6日
    116
  • 清洁笔记本电脑 USB 端口的9个技巧

    大约 92%的人口拥有至少一台计算机设备?在这些设备中,有几个我们通常不会考虑太多的小型 USB 端口。 问题是,如果我们不小心,这些端口会聚集大量灰尘和污垢。如果没有正常工作的端口,您将无法使用任何您喜欢的 USB 小工具。 这就是为什么我们收集了重要提示来帮助您学习如何清洁 USB 端口而不会对您或您的笔记本电脑造成任何风险! 检查 USB 端口 您要做的第一件事是仔细查看端口的损坏情况。如果您不知道是什么导致了问题,您就无法深入学习如何清洁笔记本电脑的 USB 端口。 另外,您查看 USB 端口多少次?在尝试清洁端口之前,最好先了解端口的内部工作原理。 您选择的方法完全取决于卡在端口内的内容。在继续下一步之前,请花一些时间检查它。 压缩的空气 一罐压缩空气总是排在任何“如何清洁电子产品”列表的首位,这是有充分理由的。这个方便的工具为您提供一股强大的空气,以去除任何收集的灰尘。 当端口内没有任何粘性物质时,它的效果最佳。否则,您最终会在物质上沾上更多灰尘。 确保以一定角度使用压缩空气。这允许气流进出,同时带来污垢。使用压缩空气直接进入笔记本电脑端口有可能将灰尘推入更多的内部而不是向外。 牙签 最好的 USB 清洁技巧之一是使用牙签清除手指无法触及的较大块状物。牙签足够细,可以塞进那些小缝隙中,帮助您拔出任何顽固的灰尘团。 始终使用塑料或木制牙签,切勿尝试使用金属制成的东西。如果以错误的方式使用,金属物体可能会对您和您的笔记本电脑造成损害。 即使使用正确的材料,您也需要小心挖掘灰尘。最好多花几分钟时间,而不是匆忙损坏港口内的重要东西。 异丙醇和棉花 当您学习如何清洁充满垃圾的笔记本电脑端口时,您需要将注意力转向异丙醇。 酒精是一种很好的电子产品清洁剂,因为它可以分解很多物质,而且它干得很快,所以没有损坏任何东西的风险。使用高酒精浓度,至少 70% 或以上。浓缩液越高,清洁和干燥效果就越好。 棉签是实现此目的的最佳配对。这是一个小工具,不会保持太多水分,这意味着没有浸透端口的风险。 在棉花上涂抹一些异丙醇,然后用它轻轻擦去任何物质。超细纤维布也适用于此。 即使干燥时间很快,最好确保在重新打开笔记本电脑之前有足够的时间让其干燥。 干牙刷 对于那些在清洁 USB 端口时根本不想让步的顽固东西,干洗牙刷是您最好的选择。旧牙刷非常适合这种情况,因为刷毛已磨损且柔软。 您将使…

    2021年7月25日
    113
  • 百度智能小程序是什么?

    智能小程序,是百度提供的一种技术解决方案。开发者基于此开发出来的服务,在各类宿主环境(手机 App、车载系统、IOT 设备等)中,可做到用户无感知安装过程即点即用。 原理概览 智能小程序在开发模式上基于 Web 前端开发的技能和生态,在运行时则采用了类客户端的方案,旨在使用体验上超越传统的 Web 前端技术,在开发效率上超过传统的客户端技术。也因此具有 Web 或客户端背景的开发者,可以通过官方文档和开发者社区快速学习和开发。 小程序使用了双线程模型,包括逻辑层和渲染层。逻辑层作为一个单独的线程执行 js 代码,控制小程序数据的生成和处理;渲染层使用了 WebView 线程,处理页面的渲染和用户的事件交互行为。 体验智能小程序 用户可以在各类宿主环境中访问到丰富的智能小程序的服务,例如手机百度 App 中的搜索、Feed 、个人中心等场景 智能小程序是一种新的开放能力,开发者可以快速地开发一个智能小程序。通过搜索,用户可以在手百 App 内被便捷地获取和传播。 框架概述 SWAN App 基本开发思路类似于前端开发,并增强调用大量端能力,性能体验优于普通 Web 。上层架构基于 JS 开发,可以辅助开发者进行良好得开发。 SWAN App 为开发者提供了 MVVM 的开发方式。JS 状态的变更引起视图的变化,视图的变更也可以回馈到逻辑层的状态中,开发者开发更加方便。 目录结构 工程的工作目录中包含以下文件: |____app.css |____app.json |____project.swan.json |____pages | |____detail | | |____detail.css | | |____detail.swan | | |____detail.js | |____index | | |____index.js | | |____index.swan | | |____index.css |____app.js 我们看到以下几类的文件:1、 .json 为后缀的 JSON 配置文件,这个文件配置了 SWAN 智能小程序所有页面的路径和界面展现样式等;2、 .swan 结尾的 SWAN 模板文件,这个文件是用来描述当前这个页面的文件结构,类似于网页网页中的 HTML 文件;3、 .css 结尾的 CSS 样式文件,描述页面样式;4、 .js 结尾…

    2021年4月4日
    96
  • 2023年中国头孢药物市场规模及发展前景预测分析

    头孢类医药中间体属于原料药的上游环节,不需要按照药品规则生产报批、申请批号,受益于下游抗生素行业的稳步发展。头孢类医药中间体分为头孢母核中间体和头孢侧链中间体。由不同的侧链中间体与母核中间体的C3位及C7位结合形成不同的头孢抗生素。其中母核中间体主要分为7-ACA、7-ADCA、D-7ACA、GCLE等,侧链中间体主要包括AE-活性酯、头孢克肟侧链酸活性酯、头孢他啶侧链酸活性酯、呋喃铵盐等。目前全球头孢类医药中间体的大部分生产已经转移到国内,发行人是行业内头孢母核中间体7-ACA的重要生产厂家之一。 根据产品问世年代与药理性能的不同,头孢菌素可划分为五代产品。其中,第一代产品主要有头孢拉定、头孢唑林钠等;第二代产品主要有头孢替安、头孢呋辛等;第三代产品主要有头孢哌酮舒巴坦、头孢哌酮他唑巴坦等;第四代产品主要有头孢吡污、头孢匹罗等;第五代产品主要有头孢洛林酯等。现阶段,我国市场中,第二代与第三代产品依然是主流,是市场中的主导者。 头孢品种及药品特点一览表 头孢药品市场规模 目前我国头孢注射剂基本均在医疗机构使用,其整体规模占到市场份额的80%以上,口服头孢药品市场占比不足20%。目前,纳入集采的头孢药品占整个头孢市场规模不到30%。2020年受疫情影响,国内头孢药物市场规模大幅下滑,2021年疫情常态化防控后,头孢市场规模降幅收窄,与2020年度市场规模基本相当。随着疫情放开,国内头孢药物市场规模将微幅上涨,预计2023年中国头孢药物市场规模将达581.64亿元。 数据来源:米内中商产业研究院整理 市场发展前景 头孢中间体的下游终端产品主要为注射用头孢药物,而注射用头孢药物的使用终端类型为医院(包括公立、私立,乡镇卫生所等),另外头孢中间体及下游原料药还存在一定量的出口市场。头孢类医药中间体属于原料药的上游环节,不需要按照药品规则生产报批、申请批号,受益于下游抗生素行业的稳步发展。

    2023年3月11日
    15
  • 网络推广广告名词解释:CPA、CPS、CPM、CPT、CPC 是什么意思?

    网络营销之所以越来越受到重视一个主要的原因就是因为“精准”。相比较传统媒体的陈旧广告形式,网络营销能为广告主带来更为确切的效果与回报,更有传统媒体所没有的即时互动性。很多企业借助于精准的网络营销成为人尽皆知的知名品牌。 众多的成功案例吸引着更多的企业计划投入到网络营销中的大潮中来。那么我们在做网络营销前应该要了解哪些基本知识呢?王大拙今天开始为您一一讲解。首先我们来了解一下网络营销中的几个常见基本术语:CPA、CPS、CPM、CPT、CPC 王大拙 他们的英文全称与基本含义分别是: 1. CPC(Cost Per Click) 每点击成本。CPC是一种点击付费广告,根据广告被点击的次数收费。 cpc广告案例 举例:关键词广告一般采用这种定价模式,比较典型的有搜索引擎广告,比如百度、360、搜狗、谷歌等等 2.CPM(Cost Per Mille) 每千人成本。CPM是一种展示付费广告,只要展示了广告主的广告内容,广告主就为此付费。 cpm广告案例 举例:CPM(千人成本)指的是广告投放过程中,平均每一千人分别听到或者看到某广告一次一共需要多少广告成本。APP开屏广告和微信朋友圈广告常用的就是CPM的收费方式 3.CPA(Cost Per Action) 每产生一次行为成本。CPA是一种按广告投放实际效果计价方式的广告,按设定的有效标准来收费,而不限广告投放量。 cpa 举例:简单来讲就是一条线索多少钱。一个注册表单多少钱,头条的广告中就有按照cpa收费的 4.CPS(Cost Per Sales):以实际销售产品数量来换算广告金额。CPS是一种以实际销售产品数量来计算广告费用的广告, cps 举例:这种广告更多的适合购物类、导购类、网址导航类的网站,需要精准的流量才能带来转化,淘宝客是这里面最鲜明的例子。 5. CPT(Cost Per Time) 每时间段成本。CPT是一种以时间来计费的广告,国内很多的网站都是按照“一个星期多少钱”这种固定收费模式来收费。 cpt 举例:常见的网站上固定的广告位置,刊例收费方式就是CPT 总结:通过以上信息我们知道: (1)CPT和CPM只在第一步收取广告费用,就是媒体只需要将广告对广告受众进行了展示,就可以向广告主收取广告费用。 (2)CPC只收取第二步费用,消费者看到广告后并进行了点击行为以后,媒体向广告主收取广告费用。 (3…

    2021年6月24日
    182