Mysql数据处理/行转列/列转行/分割/拼接/数据复制汇总

mysql数据处理记录(使用的 Workbench)

  1. 生成随机数
  2. 逗号或分号拼接的字符串分割成多行
  3. 多行数据转化成用逗号拼接的字符串
  4. 将A表的数据添加到B表

一、生成随机数

生成18位:(19位就加颗0 / 17位就减0)

SELECT FLOOR(+ RAND() * 10000000000000000000)

二、将字符串分割(行转列)

select a.ID,substring_index(substring_index(a.B,‘,‘,b.help_topic_id+1),‘,‘,-1) as NAME
from
AAA  a
join
mysql.help_topic b
on b.help_topic_id < (length(a.B) - length(replace(a.B,‘,‘,‘‘))+1)
order by a.ID

这段SQL是用逗号分割, 把(AAA替换成 表名) (B替换成需要分割的字段名)  可直接使用

原理和解析过程去 https://sunjia-704471770-qq-com.iteye.com/blog/1912929

三、用分号拼接 (列转行)

select    group_concat(name)name     from  表名 group by PARENTUUID(逗号拼接)

分号拼接

select group_concat(name,‘;‘)name    from 表名 group by PARENTUUID

这样的结果是  A;,B;,C;,  改进:

select REPLACE(group_concat(name,‘;‘),‘,‘,‘‘)name    from  表名  group by PARENTUUID

结果 A;B;C;

四、将A表数据插入到B表

1.表结构与字段都相同

insert into B select * from  A

注意:如果B表中已有数据  注意的是避免主键重复  如果报错先排查是否主键重复添加,最好的方法是先把A表的主键约束去掉 并使用 alter table 表名 drop ID 去掉主键再添加(B表ID自增)

2.表结构不同 只添加个别字段

insert into B (字段1,字段2) select 字段1,字段2  from  A   (如果字段名不一样  例:insert into B (字段1,字段2) select 字段A as 字段1,字段B as 字段2  from  A )

补充:在数据数据迁移插入时,可将以上四大点配合使用 有问题评论区见。

注意:本篇文章适合练习,不适合大量数据迁移,若千万级数据请出门右拐.转载请捎带本文链接。

原文地址:https://www.cnblogs.com/liangweitao/p/11143592.html

时间: 2025-01-10 12:54:37

Mysql数据处理/行转列/列转行/分割/拼接/数据复制汇总的相关文章

mysql多行变多列(衍生形式)

我的这篇文章整理了mysql多行变多列的2种常见形式:http://blog.csdn.net/rainyspring4540/article/details/50231435 这里就不赘述了,下面说下它更复杂的衍生形式: 表结构: create table student ( name varchar(20) not null, -- 姓名 course varchar(20) not null,-- 科目 score int ,-- 成绩 bossEvaluate varchar(20),-

mysql 多行合并一列

mysql  多行合并一列 使用的函数为: GROUP_CONCAT(exp) 其中exp 的参数类似如下: (field order  by field   desc  separator ';'); 具体的例子如下: 创建表: CREATE TABLE `login` ( `Id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) DEFAULT NULL, PRIMARY KEY (`Id`) ) ENGINE=MyISAM AUTO

数据库 行转列 列转行详解

目录结构如下: 行转列 列转行 [一].行转列 1.1.初始测试数据 表结构:TEST_TB_GRADE create table TEST_TB_GRADE ( ID        NUMBER(10) not null, USER_NAME VARCHAR2(20 CHAR), COURSE    VARCHAR2(20 CHAR), SCORE     FLOAT ) [sql] view plaincopy create table TEST_TB_GRADE ( ID        N

MSSQLServer 纵向表转横向表 横向表转纵向表 行转列 列转行

MSSQLServer 纵向表转横向表  横向表转纵向表 建表语句及插入数据语句: CREATE TABLE Test_y( [Name] [nchar](10) NULL, [Course] [nchar](10) NULL, [Grade] [int] NULL ) insert into Test_y values ('张三','语文',75); insert into Test_y values ('张三','数学',80); insert into Test_y values ('张三

Sql server 中将数据行转列列转行(二)

老规矩,先弄一波测试数据,数据填充代码没有什么意义,先折叠起来: /* 第一步:创建临时表结构 */ CREATE TABLE #Student --创建临时表 ( StuName nvarchar(20), --学生名称 Chinese int, Math int, English int ) DROP TABLE #Student --删除临时表 SELECT * FROM #Student --查询所有数据 INSERT INTO #Student(StuName,Chinese,Math

行数据库VS列数据库

一.介绍 目前大数据存储有两种方案可供选择:行存储和列存储.业界对两种存储方案有很多争持,集中焦点是:谁能够更有效地处理海量数据,且兼顾安全.可靠.完整性.从目前发展情况看,关系数据库已经不适应这种巨大的存储量和计算要求,基本是淘汰出局.在已知的几种大数据处理软件中,Hadoop的HBase采用列存储,MongoDB是文档型的行存储,Lexst是二进制型的行存储. 顾名思义,这两种数据库架构在存贮数据时的方式是大相径庭的.在行式数据库中,每一行中的每一块数据都是紧挨着另一块数据存放在硬盘中.一般

行存储 VS 列存储

概述 目前大数据存储有两种方案可供选择:行存储(Row-Based)和列存储(Column-Based).业界对两种存储方案有很多争持,集中焦点是:谁能够更有效地处理海量数据,且兼顾安全.可靠.完整性.从目前发展情况看,关系数据库已经不适应这种巨大的存储量和计算要求,基本是淘汰出局.在已知的几种大数据处理软件中,Hadoop的HBase采用列存储,MongoDB是文档型的行存储,Lexst是二进制型的行存储. 什么是列存储? 列式存储(column-based)是相对于传统关系型数据库的行式存储

Oracle 多行变一列的方法

多行变一列的方法有很多,觉得这个第一眼看懂了当时就用的这个办法. 情况是这样的.以下数据前几列是一样的,需要把VAT_VALUE_CHAR 的值放在同一行上. SELECT * FROM ps_vat_defaults defaults WHERE defaults.vat_driver = 'VAT_ENT_RGSTRN' AND defaults.vat_driver_key1 = 'AMB19' AND defaults.vat_driver_key2 = 'DEU' AND vat_de

如何在一个实例下并存行存储和列存储数据库

相关概念 BLU Acceleration BLU Acceleration 是 DB2 10.5 最新特性,与传统的行存储数据方式不同,数据是按照列来进行组织存储的,即采用列式存储.BLU 除了列存储表特性外,它的数据跳读,SIMD 和类哈弗曼的压缩算法等特性方便在内存中完成数据处理,简化并且加速了数据分析的工作量.同时不再需要索引.MQT 等,这样易于实施并可以自行调优,提高了 CPU 的使用率,以及降低了 IO. IBM Data Server Manager IBM 最新推出的管理多种平