Mysql數據處理/行轉列/列轉行/分割/拼接/數據複製彙總

原文: Mysql數據處理/行轉列/列轉行/分割/拼接/數據複製彙總

mysql數據處理記錄(使用的 Workbench)html

  1. 生成隨機數
  2. 逗號或分號拼接的字符串分割成多行
  3. 多行數據轉化成用逗號拼接的字符串
  4. 將A表的數據添加到B表

1、生成隨機數mysql

生成18位:(19位就加顆0 / 17位就減0)sql

SELECT FLOOR(+ RAND() * 10000000000000000000)spa

2、將字符串分割(行轉列)htm

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.IDblog

這段SQL是用逗號分割, 把(AAA替換成 表名) (B替換成須要分割的字段名)  可直接使用字符串

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

3、用分號拼接 (列轉行)string

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

分號拼接

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;

4、將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 )

補充:在數據數據遷移插入時,可將以上四大點配合使用 有問題評論區見。

注意:本篇文章適合練習,不適合大量數據遷移,若千萬級數據請出門右拐.轉載請捎帶本文連接。

相關文章
相關標籤/搜索