我的编程空间,编程开发者的网络收藏夹
学习永远不晚

MYSQL: sql中某一个字段内容为用逗号分割的字符串转换成多条数据(适用于部分树机构)

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

MYSQL: sql中某一个字段内容为用逗号分割的字符串转换成多条数据(适用于部分树机构)

创建表的示例

 CREATE TABLE tbl_name(     id       int(11)    not null auto_increment,     userName varchar(100)    not null, PRIMARY KEY(id) ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;  insert into tbl_name values (1,'a,aa,aaa'); insert into tbl_name values (2,'b,bb'); insert into tbl_name values (3,'c,cc')

数据如下图:
在这里插入图片描述
SELECT a.id,SUBSTRING_INDEX(SUBSTRING_INDEX(a.userName,‘,’,b.help_topic_id+1),‘,’,-1) as name
from tbl_name a left join mysql.help_topic b
on b.help_topic_id < (LENGTH(a.userName)-LENGTH(REPLACE(a.userName,‘,’,‘’))+1)
ORDER BY a.id;
在这里插入图片描述

本人需求为 图层树的父级节点都在 ancestors 字段中,需要获取多个图层中信息的不重复的父级节点即可使用

DROP TABLE IF EXISTS `map_two_layer`;CREATE TABLE `map_two_layer`  (  `layer_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '图层ID',  `node_types` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '节点类型(0目录1服务)',  `parent_id` bigint(20) NULL DEFAULT NULL COMMENT '父级ID',  `ancestors` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '祖级列表'  PRIMARY KEY (`layer_id`) USING BTREE) ENGINE = InnoDB AUTO_INCREMENT = 1732 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '图层注册' ROW_FORMAT = DYNAMIC;SET FOREIGN_KEY_CHECKS = 1;

主要表结构如下:

在这里插入图片描述

SELECT DISTINCT (SUBSTRING_INDEX(SUBSTRING_INDEX(a.ancestors,',',b.help_topic_id+1),',',-1) ) as name from map_two_layer a left join mysql.help_topic b on b.help_topic_id < (LENGTH(a.ancestors)-LENGTH(REPLACE(a.ancestors,',',''))+1)  ORDER BY a.layer_id ;

查询后对主键ID去重即可获取到需要的相关信息
在这里插入图片描述

来源地址:https://blog.csdn.net/qq_29757467/article/details/129693943

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

MYSQL: sql中某一个字段内容为用逗号分割的字符串转换成多条数据(适用于部分树机构)

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

MYSQL: sql中某一个字段内容为用逗号分割的字符串转换成多条数据(适用于部分树机构)

1.创建表的示例 CREATE TABLE tbl_name( id int(11) not null auto_increment, userName varchar(100) not null,
2023-08-17

编程热搜

目录