起始是同学有个需求,怎么实现一张拆成多张表,同时数据也拆好。所有如下探究,简化数据和例子

1、先决条件

  • 图示

  • mysql 数据库

  • mysql初始化数据

    • create table A
      (no   int auto_incrementprimary key,name varchar(30) null,de   varchar(30) null
      );INSERT INTO A (no, name, de) VALUES (1, '赵', '部门一');
      INSERT INTO A (no, name, de) VALUES (2, '钱', '部门一');
      INSERT INTO A (no, name, de) VALUES (3, '孙', '部门一');
      INSERT INTO A (no, name, de) VALUES (4, '李', '部门二');
      INSERT INTO A (no, name, de) VALUES (5, '周', '部门二');
      INSERT INTO A (no, name, de) VALUES (6, '吴', '部门二');
      INSERT INTO A (no, name, de) VALUES (7, '郑', '部门三');
      INSERT INTO A (no, name, de) VALUES (8, '王', '部门三');
    • 注释

      • 创建一张表A, 三个字段,no:编号,name:姓名, de:部门名
    • 需求按de(部门)拆成多张表,暂且以de的值为表名,sql语句怎么实现?

    • 效果图

2、思路

  • mysql有create select 语法,只是支持生一张表,但是这个是不确定多少个部门的
  • 利用select语句自动生成 create select 语句,复制一下就完成分表操作

3、实操

3.1、create select 语句

create table  新表名 select 字段1, 字段2 from 原表名 where 条件;例子(比如分开部门一所有数据):
create table  部门一 select no, name from A where de='部门一';

3.2、生成一条create table 语句

select  CONCAT('create table  ', de, ' select no, name from A where de=''', de, ''';')  as tab from A limit 1
  • concat : 拼接字符函数

  • 效果:

3.3、生成所有create table 语句,去重 (通过group by去重)

select  CONCAT('create table  ', de, ' select no, name from A where de=''', de, ''';')  as tab from A group by  de
  • 效果

3.4、继续优化,如果100个部门不得复制一百遍吗?能不能将tab的值拼接起来

  • group_concat 字段名 SEPARATOR  分隔符
    
  • 生成sql

  • select group_concat(aa.tab SEPARATOR ' ')from(select  CONCAT('create table  ', de, ' select no, name from A where de=''', de, ''';')  as tab from A group by  de ) aa;
    
  • 结果是:

    • create table  部门一 select no, name from A where de='部门一'; create table  部门二 select no, name from A where de='部门二'; create table  部门三 select no, name from A where de='部门三';
      

3.5、复制执行即可。

4、总结

  1. 本质上是利用mysql的select语句拼接SQL,替换手动拼接sql的麻烦和容易出错
  2. 然后利用mysql支持语句执行sql功能。例如其他需求,比如订正数据时候,可以利用select生update语句,然后执行,这也一个思路,当然配合excel使用

mysql一张表拆成多张表思路方案实现相关推荐

  1. oracle一个表拆成多个表,oracle拆分函数,将字符串拆分成多行多字段表数据

    --创建OBJECT类型,包含三个字段 CREATE OR REPLACE TYPE OBJ_V_TABLE AS OBJECT ( ID VARCHAR2(50), NAME VARCHAR2(50 ...

  2. oracle一个表拆成多个表,oracle – 在oracle表中将多个以逗号分隔的值拆分为多行...

    接受的答案使用条件DBMS_RANDOM.VALUE IS NOT NULL这是不合适的. 它只是防止循环,但是一个简单的问题会出现, 如何和何时dbms_random.VALUE可以为空? 从逻辑上 ...

  3. excel几个表合成一张_快速将多个excel表合并成一个excel表

    应用场景:有很多张excel,而且excel表里面的结构基本一样,如何快速将这些excel合并在一个excel页面,便于后期分析和统计 技术实现:利用excel表的宏计算实现. 注意:金山的WPS没有 ...

  4. 快速将多个excel表合并成一个excel表

    应用场景:有很多张excel,而且excel表里面的结构基本一样,如何快速将这些excel合并在一个excel页面,便于后期分析和统计 技术实现:利用excel表的宏计算实现. 注意:金山的WPS没有 ...

  5. 如何将多个Excel表合并成一个Excel表

    如何将多个Excel表合并成一个Excel表 每天需要和Excel办公软件打交道俄小伙伴,他们的电脑桌面上总是布满密密麻麻的Excel表,这样看上去非常的凌乱,其实我们完全可以将其中类别相同的Exce ...

  6. 如何快速把多个excel表合并成一个excel表(不熟悉vba及公式的人)

    对于不熟悉Excel公式,不熟悉vba的人,要如何按需要快速把多个excel表合并成一个excel表? 对于Excel的合并,很多需要通过vba变成,但对于不熟悉vba编程的人,如何合并呢?给大家推荐 ...

  7. excel合并多个工作表_简单快速多个Excel表合并成一个Excel表

    在工作中经常遇到需要把多个电子表合成一个电子表的情况,比如回收的多份调查表格,多个班级成绩合成全校成绩等问题.用传统的方法复制.粘贴耗时费力,还容易出错. 这些表格的特点是每个表格结构一致,需要按一定 ...

  8. excel数据库设计表转换成sql建表语句

    序号 字段英文 字段中文 主键 类型 长度 单位 空否 默认值 备注 1. ID 自增ID N 11 2. REC_CREATOR 记录创建责任者 C 10 3. REC_CREATE_TIME 记录 ...

  9. VBA学习——对“快速将多个excel表合并成一个excel表”进行说明及优化

    修改了两个地方 1.原始表格有错误,打开会报错.优化1会自动忽略报错对表格进行合并. 2.表格格式包含不同种类的文件,如".xls"和".xlsx".优化2会将 ...

最新文章

  1. Ant Design Pro 登录流程以及路由权限设置
  2. 数据库架构优化的12种组合方式与风险解读
  3. Linux下ipconfig分析及C语言实现
  4. python opencv读取网络图片
  5. Blog_mini完整部署文档
  6. 【Linux】一步一步学Linux——w命令(227)
  7. 多项式除法,多项式取模
  8. C语言小程序:找出100以内素数
  9. 《通信原理》复习笔记10----第十章模拟信号的数字传输及相关例题(重点及难点)
  10. Windows界面UI自绘编程(上)之下部
  11. excel两列数据对比找不同_Excel“找不同”小妙招来啦,请查收
  12. 解决appium中Error: The port #8100 is occupied by an other process的问题
  13. C语言-投票选举问题
  14. [凯圣王]有氧运动无氧运动/三大供能系统/跑步会不会腿粗/健美爱好者为什么不做HIIT减脂/空腹有氧思路/思路不同身材不同
  15. LBT(CCA) in LAA/Multefire (二)
  16. 英语preciouscorals贵珊瑚PreciousCorals红珊瑚
  17. 【Kong】网关-rate-limiting限流
  18. 服务器脱机18个文档正在打印,打印机提示脱机打印的解决方案.docx
  19. MOOS程序解析记录(7)pMarinePID解析
  20. 多路视频数据实时采集系统设计与实现

热门文章

  1. 数仓实战|一文看懂数据中台接口数据采集
  2. 【微信小程序】vertical属性、文章列表
  3. Linux安装Ubuntu18.04/显卡驱动/CUDA11.4/cuDNN8.2
  4. python单选题库答案_Python单选题库
  5. python数据分析透视表,定制你的分析计算需求
  6. 双馈风机虚拟惯性控制参与系统一次调频的Matlab Simulink模型
  7. 东莞1号线广东医科大学站进入深基坑土方开挖
  8. HIPAA Program Reference Handbook
  9. 懂数据会营销的健身房会员管理软件
  10. 已备案域名能不能直接用于阿里云服务器?