mysql 根据 某个字段 把一行数据拆成多行
2017-06-14 18:02
573 查看
原始表的数据
处理成的临时表的数据
最终表的数据:
代码如下: 仅供参考:
CREATE DEFINER=`data_mining`@`%` PROCEDURE `new_procedure_test`()
BEGIN
declare num int ;
declare vsql longtext;
declare count int;
set vsql='';
drop table if exists crm_excel.customer_clue_detail_temp;
create table crm_excel.customer_clue_detail_temp(id int PRIMARY KEY auto_increment
, cus_clue_id varchar(5000));
insert into crm_excel.customer_clue_detail_temp(cus_clue_id)
select replace(clue_id,'select ',concat('select ',id,' as id,')) as cus_clue_id
from
(
select id ,
replace(concat('select ', clue_id ),',',' as clue_id union all select ') as clue_id
from weixin_crm.newcrm_customer a
where clue_id like '%,%'
) a ;
select count(1) into count from crm_excel.customer_clue_detail_temp;
set @str = (select cus_clue_id from crm_excel.customer_clue_detail_temp where id=1);
set vsql=@str;
set num=2;
while num <= count do
set @str = (select cus_clue_id from crm_excel.customer_clue_detail_temp where id=num);
set vsql=concat(vsql,' union all ' , @str);
set num=num+1;
end while;
set vsql=concat('insert into crm_excel.customer_clue_detail(cus_id,clue_id)', vsql );
set @v_sql=vsql;
#select @v_sql;
prepare stmt from @v_sql;
execute stmt ;
deallocate prepare stmt;
END
处理成的临时表的数据
最终表的数据:
代码如下: 仅供参考:
CREATE DEFINER=`data_mining`@`%` PROCEDURE `new_procedure_test`()
BEGIN
declare num int ;
declare vsql longtext;
declare count int;
set vsql='';
drop table if exists crm_excel.customer_clue_detail_temp;
create table crm_excel.customer_clue_detail_temp(id int PRIMARY KEY auto_increment
, cus_clue_id varchar(5000));
insert into crm_excel.customer_clue_detail_temp(cus_clue_id)
select replace(clue_id,'select ',concat('select ',id,' as id,')) as cus_clue_id
from
(
select id ,
replace(concat('select ', clue_id ),',',' as clue_id union all select ') as clue_id
from weixin_crm.newcrm_customer a
where clue_id like '%,%'
) a ;
select count(1) into count from crm_excel.customer_clue_detail_temp;
set @str = (select cus_clue_id from crm_excel.customer_clue_detail_temp where id=1);
set vsql=@str;
set num=2;
while num <= count do
set @str = (select cus_clue_id from crm_excel.customer_clue_detail_temp where id=num);
set vsql=concat(vsql,' union all ' , @str);
set num=num+1;
end while;
set vsql=concat('insert into crm_excel.customer_clue_detail(cus_id,clue_id)', vsql );
set @v_sql=vsql;
#select @v_sql;
prepare stmt from @v_sql;
execute stmt ;
deallocate prepare stmt;
END
相关文章推荐
- MySql多行数据合并成一行,将字段中的值拼接在一起
- MySql多行数据合并成一行,将字段中的值拼接在一起
- mysql利用group_concat()合并多行数据到一行
- mysql创建存储过程(根据时间字段来更新数据)
- mysql将多行数据合并成一行显示
- MySQL根据某一个或者多个字段查找重复数据
- mysql中将多行数据合并成一行数据
- mysql 多行数据合并成一行
- MySQL大数据量表根据非索引字段检索优化
- mysql根据字段查询数据库中的存在该字段的所有数据表
- SQL-根据id合并多行字段数据
- mysql如何将多行数据合并成一行
- mysql利用group_concat()合并多行数据到一行
- mysql根据一个字段查询重复数据
- Mysql上查询字段多行变成一行,函数小技巧.
- mysql 合并多行数据到一行
- mysql实现搜索多行数据合并成一行
- mysql多行数据合并为一行
- mysql删除重复的数据,保留一条,根据多个字段判断。以及统计重复数据
- MySQLQueryBrowser工具在显示数据表的列时,只要窗口变动,字段名上就乱成一行黑色