精华内容
下载资源
问答
  • mysql 一行数据拆分多行
    千次阅读
    2020-11-21 14:01:44
    # 查找出被逗号分隔字段需要拆分的最大数量
    select max((LENGTH(逗号分隔的字段)-LENGTH(REPLACE(逗号分隔的字段, ',', ''))+1)) from 处理表 where 条件;
    
    # 创建一张临时表用于联合查询,方便把处理表单行记录分隔为多行
    CREATE TEMPORARY TABLE incre_table (
        `id` int NOT NULL AUTO_INCREMENT,
        PRIMARY KEY (`id`)
    );
    insert into incre_table values (1);
    insert into incre_table values (2);
    insert into incre_table values (3);
    insert into incre_table values (4);
    insert into incre_table values (5);
    insert into incre_table values (6);
    insert into incre_table values (7);
    insert into incre_table values (8);
    insert into incre_table values (9);
    insert into incre_table values (10);
    # ... 大于 需要拆分的最大数量
    
    # 关键在于连表查询 ON b.id <= 逗号分隔的数量
    SELECT
        a.id,
        substring_index(
            substring_index(a.逗号分隔的字段, ',', b.id),
            ',', - 1
        )
    FROM
        处理表 a
    RIGHT JOIN incre_table b ON b.id <= (
        LENGTH(a.逗号分隔的字段) - LENGTH(REPLACE (a.逗号分隔的字段, ',', '')) + 1
    )
    WHERE
        a.条件;

     

    更多相关内容
  • 现在 需要将课程根据分号分割成多行 -- 使用mysql库中的自增序列表 SELECT t.id, t.NAME, substring_index( substring_index( t.curriculums, ';', b.help_topic_id + 1 ), ';',- 1 ) AS ...

    目前有表如下

    现在 需要将课程根据分号分割成多行

    -- 使用mysql库中的自增序列表
    SELECT
    	t.id,
    	t.NAME,
    	substring_index(
    		substring_index(
    			t.curriculums,
    			';',
    		b.help_topic_id + 1 
    	),
    	';',- 1 
    ) AS curriculum 
    FROM
    	test t
    	JOIN mysql.help_topic b ON b.help_topic_id < (
    	length( t.curriculums ) - length( REPLACE ( t.curriculums, ';', '' ) ) + 1 
    )

    运行结果 

     

    不推荐使用此种方式,应该坚持每个数据都是不可分割的原子数据,推荐建立关联表存储 

    展开全文
  • mysql一行数据拆分多行数据

    万次阅读 2018-12-14 15:28:00
    种:写存储过程来解决这个问题,但是用mysql一般不推荐使用存储过程,因为以后数据库版本升级或者数据迁移比较困难。 第二种:使用mysql自带的一张叫做help_topic的自增序列表,可以解决这个问题。(用该方法的...

    最近有个项目中有个问题想在sql中解决,使用的是mysql并不是很熟悉,解决的问题是:

    将该条数据按照TXYMZL拆分为两条数据,我上网也查了一下,看到普遍是有两种做法:

    第一种:写存储过程来解决这个问题,但是用mysql一般不推荐使用存储过程,因为以后数据库版本升级或者数据迁移比较困难。

    第二种:使用mysql自带的一张叫做help_topic的自增序列表,可以解决这个问题。(用该方法的时候,因为数据库的权限问题,我们在SQL中使用mysql.help_topic会报错,所以我们采用自己在数据库新建一张自增序列表,该表的内容两个字段ID,NUM 分别都是从1开始到99或者更大的为止)

    下面的SQL采用第二种来处理的上面问题:

    select
      aa.txymzl from
      (select
              substring_index(substring_index(a.txymzl,',',b.NUM),',',-1) as  txymzl
       from  (SELECT  q.TXYMZl as  txymzl,t.* from T_xxxx t
                                          left join T_xxvv q on t.YMCP=q.CPBM and q.DQZT='1'
              where t.YXBZ='1' and q.TXYMZL!='' and t.SZZBM='310106010120160002' and  instr(q.TXYMZL,',')>0) a
               join (select  NUM as NUM from T_SPLIT_NUM) b
             on b.NUM <=(length(a.txymzl)-length(REPLACE(a.txymzl,',',''))+1)
        ) aa;
    

    运行上面的SQL效果如下图所示:

    在这里插入图片描述

    展开全文
  • mysql_一列分多行操作,在一个表里的几行数据需要分拆单行存储到一行中,mysql_一列分多行操作,在一个表里的几行数据需要分拆单行存储到一行mysql_一列分多行操作,在一个表里的几行数据需要分拆单行存储...
  • mysql根据逗号将一行数据拆分成多行数据

    万次阅读 热门讨论 2018-10-25 14:47:30
    mysql根据逗号将一行数据拆分成多行数据 1、原始数据演示 2、处理结果演示 3、sql语句 SELECT a.id, a. NAME, substring_index( substring_index( a.shareholder, ',', b.help_topic_id ...

    mysql根据逗号将一行数据拆分成多行数据

    1、原始数据演示
    在这里插入图片描述

    2、处理结果演示

    在这里插入图片描述
    3、sql语句

    SELECT
    	a.id,
    	a. NAME,
    	substring_index(
    		substring_index(
    			a.shareholder,
    			',',
    			b.help_topic_id + 1
    		),
    		',' ,- 1
    	) AS shareholder
    FROM
    	company a
    JOIN mysql.help_topic b ON b.help_topic_id < (
    	length(a.shareholder) - length(
    		REPLACE (a.shareholder, ',', '')
    	) + 1
    )
    

    4、附录
    基本表建立语句

    CREATE TABLE `company` (
      `id` int(20) DEFAULT NULL,
      `name` varchar(100) DEFAULT NULL,
      `shareholder` varchar(100) DEFAULT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    INSERT INTO `company` VALUES ('1', '阿里巴巴', '马云');
    INSERT INTO `company` VALUES ('2', '淘宝', '马云,孙正义');
    
    展开全文
  • mysql根据分隔符将一行数据拆分成多行数据 文章目录mysql根据分隔符将一行数据拆分成多行数据关键函数原始数据处理结果展示三种方式,相同的原理使用MySql库中的自增序列表自建自增序列表以数据库里已有的表,构建...
  • 多行合并成一行(逗号隔开): 原表结构: 合并后的结果: 建表及插入数据: -- 创建测试用表rows_to_row create table rows_to_row( name char(5) not null default '', hobby varchar(20) not null default...
  • MySQL一行拆分多行

    2021-08-29 08:52:36
    在想如何将个数据拆分成多行前,先去了解一下MySQL里的几个函数 SUBSTRING_INDEX(str,delim,count)函数它里面有三个参数值,分别的作用是:分割字符串、分隔符、计数。 length():字符长度函数 replace():替换...
  • mysql一行多行的方法目标方法分析 最近拆分数据,用到一行多行的的场景。然鹅我并不会,百度大法走一波。 搜到了之后,拿到我的表中测试了一下,果然好用,然后就没管原理了,一顿复制粘贴解决了问题,实现了...
  • :数据库 二:sql语句 select a.house_no as ‘房子’,substring_index(substring_index(a.name,‘,’,b.help_topic_id+1),‘,’,-1) as ‘拥有者’ from aa a join mysql.help_topic b on b.help_topic_id < ...
  • MySQL实现字段分割(一行多行

    千次阅读 2021-12-02 17:24:43
    先看一下数据结构,我这里字段比较少,只弄了最重要的部分 根据我们上次学到的LEFT()函数进行分组 SELECT LEFT(provinces,6),COUNT(1) FROM `region_map_copy` GROUP BY ...help_topic:以字符拆分一行多行 SELEC
  • 拆分多行后效果: 执行SQL: SELECT SUBSTRING_INDEX( SUBSTRING_INDEX( 拆分字段, ',', T2.help_topic_id + 1 )=, ',', - 1 ) AS cloumn_name FROM ( 数据 ) T1 JOIN mysql.help_topic T1 ON T1.help_topic...
  • MySQL拆分多行

    2021-02-07 17:21:27
    步:创建一张地方表,并插入数据 -- ---------------------------- -- Table structure for place -- ---------------------------- DROP TABLE IF EXISTS `place`; CREATE TABLE `place` ( `id` bigint(20) ...
  • 多行合并一行 数据 #建表语句 DROP TABLE IF EXISTS `品牌`; CREATE TABLE `品牌` ( `id` int(0) NOT NULL, `品牌` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ) ENGINE = ...
  • MySQL分割行为多行的思路

    千次阅读 2020-04-15 12:01:13
    最近数据分析有需求,分析运营活动短信用户,但是发送短信的用户是通过 JSON 字符串数组存储在一个 text 字段的。内容类似于: ["user1", "user2", "user...那么可以考虑将这一行分割为多行,作为一个字段。 mysql.h...
  • 处理的临时表的数据 最终表的数据: 代码如下: 仅供参考: CREATE DEFINER=`data_mining`@`%` PROCEDURE `new_procedure_test`() BEGIN declare num int ; declare vsql long...
  • MySQL一行拆分成多行
  • 我使用从IMDB收集信息并将它们传输到MYSQL数据库的应用程序导入了一些数据.看起来字段没有被标准化并且在1个字段内包含许多值例如:Table MovieMovieID Movie_Title Written_By1 Movie1 Person1, Person22 M...
  • 刷题记录和刷题选择的答案,对多关系,存储到了一张表里(刷题记录ID - 红色为用户选择的答案ID) 现在产品需求,要按试题选项进行统计,看到这个数据结构心里是挣扎的… 出现这种情况大多都是属于偷懒的心态了…...
  • 如果您可以创建个数字表,其中包含从1到要分割的最大字段的数字,您可以使用如下解决方案:selecttablename.id,SUBSTRING_INDEX(SUBSTRING_INDEX(tablename.name, ',', numbers.n), ',', -1) namefromnumbers ...
  • mysql将某个字段有分隔符号分隔成多行数据 SELECT a.id, a. NAME, substring_index( substring_index( a.name, ',', b.help_topic_id + 1 ), ',' ,- 1 ) AS name FROM a JOIN ...
  • SELECT dt1, dt2 FROM( SELECT @dt1 as dt1, @dt1 := @dt1 + INTERVAL 1 DAY, @dt := @dt1 - INTERVAL 1 DAY, CASE WHEN @dt1 <= @dt2 THEN @dt ELSE @dt2 END as dt2 FROM( SELECT @dt1:=CAST('2018-08-01' as...
  • MySql 一行多行(根据特定符号分割)

    千次阅读 2021-08-07 23:50:07
    、测试数据 DROP TABLE IF EXISTS `test`; CREATE TABLE IF NOT EXISTS `test` ( `id` bigint(20) NOT NULL AUTO_INCREMENT , `name` varchar(255) DEFAULT NULL, `num` int(8), PRIMARY KEY (`id`) ); INSERT ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,112
精华内容 2,444
关键字:

mysql一行拆分成多行

mysql 订阅