目录

  • 背景
  • `A` 表的数据插入到 `B` 表中
    • 数据准备
    • 两张表的字段一致
    • 两张表的字段一致或不一致时,插入指定字段
    • 只插入 `B` 表中不存在的记录
      • 插入 `B` 表中不存在的部分记录
      • 插入 `B` 表中不存在的一条记录

背景

web 开发中,我们经常需要将一个表的数据插入到另外一个表,有时还需要指定导入字段,设置只需要导入目标表中不存在的记录,虽然这些都可以在程序中拆分成简单 sql 来实现,但是用一个 sql 的话,会节省大量代码

A 表的数据插入到 B 表中

数据准备

-- 来源表
CREATE TABLE `t1` (`id` int(11) NOT NULL AUTO_INCREMENT,`a` int(11) NOT NULL,`b` int(255) NOT NULL,PRIMARY KEY (`id`),UNIQUE KEY `index_a` (`a`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=101 DEFAULT CHARSET=utf8mb4;-- 目标表
CREATE TABLE `t3` (`id` int(11) NOT NULL AUTO_INCREMENT,`d` varchar(11) DEFAULT NULL,`b` int(11) NOT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=101 DEFAULT CHARSET=utf8mb4;--  创建存储过程,向 t1 表插入 100 条数据
CREATE DEFINER=`root`@`localhost` PROCEDURE `NewProc`(INOUT `i` int)
BEGINDECLAREi INT;SET i = 1;WHILE( i <= 100 ) DO INSERT INTO t2 VALUES (i, i, i);SET i = i + 1;END WHILE;
END

t1 表的 1 ~ 100 条数据如下

两张表的字段一致

-- 插入 A 表的全部数据
INSERT INTO 目标表 (SELECT * FROM 来源表)INSERT INTO insertTest (SELECT * FROM insertTest2)-- 插入 A 表的部分数据
INSERT INTO 目标表 (SELECT * FROM 来源表 过滤条件)INSERT INTO insertTest (SELECT * FROM insertTest2 WHERE id >= 100)

两张表的字段一致或不一致时,插入指定字段

INSERT INTO 目标表 (字段1, 字段2, ...) SELECT 字段1, 字段2, ... FROM 来源表 (这里的话字段必须保持一致)INSERT INTO t3 ( id, b ) ( SELECT t1.id, t1.b FROM t1 WHERE t1.id <= 5 )

测试 t3 表的数据如下

只插入 B 表中不存在的记录

INSERT INTO 目标表 (字段1, 字段2, ...)  SELECT 字段1, 字段2, ...  FROM 来源表
WHERE not exists (select * from 目标表 where 目标表.比较字段 = 来源表.比较字段);INSERT INTO t3 ( id, b ) (SELECTt1.id,t1.b FROMt1 WHERENOT EXISTS ( SELECT * FROM t3 WHERE t3.b = t1.b )
)

再次测试 t3 表的数据如下

插入 B 表中不存在的部分记录

INSERT INTO insertTest2 (id,name) (SELECT id, name FROM insertTestWHERE NOT EXISTS (SELECT * FROM insertTest2 WHERE insertTest2.id = insertTest.id));

插入 B 表中不存在的一条记录

INSERT INTO insertTest (id, name) (SELECT 100, 'liudehua' FROM  dual    WHERE NOT EXISTS (SELECT * FROM insertTest WHERE insertTest.id = 100));

mysql把A表的数据插入到B表相关推荐

  1. 实战用法:A表的数据插入到B表,B表存在

    1,如果A表和B表的列表名一致,可以理解为全量备份       insert into B select * from A:    将A表的数据复制到B表       insert into B se ...

  2. 从一个表查询数据插入另一个表

    insert into Favorite (title,url,className,userid,time) (select 'test title','http://www.3dxm.com','t ...

  3. 数据结构中La表的数据合并到Lb表中

    实验描述:La表中的数据为(3,5,8,11)  Lb 表中的数据为(2,6,8,9,11,15,20) 将La表中的数据而不存在Lb表的数据插入到Lb表中,从而实现并集操作. 出现的问题:最后实现的 ...

  4. MySql中把一个表的数据插入到另一个表中的实现代码--转

    MySql中把一个表的数据插入到另一个表中的实现代码 司的一个项目,做报表--要关联的表结构比较多,最后决定把要用的数据集合到一张新表中,需要用到以下的sql语法......分享下: web开发中,我 ...

  5. MySQL 数据库怎样把一个表的数据插入到另一个表

    web开发中,我们经常需要将一个表的数据插入到另外一个表,有时还需要指定导入字段,设置只需要导入目标表中不存在的记录,虽然这些都可以在程序中拆分成简单sql来实现,但是用一个sql的话,会节省大量代码 ...

  6. mysql 将a表数据插入b表_查询A表数据插入到B表中 sql

    前言: 最近遇到一个 查询A表数据插入到B表中sql的问 所以就发文章记录下,希望能帮助到家 开发环境 win10专业版本(其他操作系统具体安装mysql请百度 ) 准备工作: 安装MySQL 1 m ...

  7. mysql第四篇:数据操作之多表查询

    mysql第四篇:数据操作之多表查询 一.多表联合查询 #创建部门 CREATE TABLE IF NOT EXISTS dept (did int not null auto_increment P ...

  8. leveldb源码分析:数据插入续(跳表)

    leveldb数据的插入-跳表 本文主要是接着上一篇文章,继续深入探索Write函数调用插入之后的流程. status = WriteBatchInternal::InsertInto(updates ...

  9. java实现将A表数据转移到B表_解决用B表跟新A表数据,如果A表中没有,则把B表的数据插入A表(merge into)...

    作用:merge into 解决用B表跟新A表数据,如果A表中没有,则把B表的数据插入A表: 语法: MERGE INTO [your table-name] [rename your table h ...

  10. MySQL 两张表关联更新(用一个表的数据更新另一个表的数据)两个表使用条件从另外一个表获取数据更新本表

    MySQL 两张表关联更新(用一个表的数据更新另一个表的数据)两个表使用条件从另外一个表获取数据更新本表 有两张表,info1, info2 . info1: info2: 方式一:要用info2中的 ...

最新文章

  1. 观察者模式(Observer Pattern)(二):HeadFirst中的气象站的实现
  2. python实现mysql事务_python连接mysql并提交mysql事务示例
  3. 10 个深恶痛绝的 Java 异常。。 1
  4. 基于 abp vNext 和 .NET Core 开发博客项目 - 完善与美化,Swagger登场
  5. 一个失败的SAP Spartacus路由修改尝试 -在CmsPageGuard的开头触发 OCC API 调用
  6. java继承与多态性_Java继承与多态浅析
  7. C 标准IO 库函数与Unbuffered IO函数
  8. 信息学奥赛一本通(1209:分数求和)
  9. 剁手党也有春天 -- 淘宝 UWP ”比较“功能诞生记
  10. xp的guest访问
  11. 使用 IntraWeb (40) - 自定义 Session 数据
  12. tomcat绿色版及安装版修改内存大小的方法
  13. 趣学Python之弹球游戏第三阶段--上下反弹
  14. vue-cli 里axios的使用
  15. postfix+dovecot+maildrop+mailscanner+clamav+spamassassin搭建rhel6平台邮件服务器
  16. 宋宝华linux内核驱动代码,宋宝华 《Linux设备驱动开发详解》示例代码之fifo字符设备驱动...
  17. USTC高级软件工程课程学习心得
  18. 大华服务器装系统,clonezilla安装系统理论篇
  19. 全面图解路由器接口及连接
  20. 农历日期组件 【恋爱小清单开发总结】

热门文章

  1. TensorFlow基础知识:计算图中的Op,边,和张量
  2. 极客大学产品经理训练营 产品文档和原型 第7课总结
  3. 算法:Longest Valid Parentheses(最长有效的括号)
  4. 编写时间的php,PHP如何实现简单日历类编写 PHP实现简单日历类编写代码
  5. rtx2060什么水平_《赛博朋克2077》持续火热 什么样的笔记本才能畅玩这款游戏
  6. 为什么构造函数不能声明为虚函数?
  7. Linux 查找满足条件的文件并复制
  8. Numpy之文件存取
  9. python 学习小结(1)
  10. 编译原理完整学习笔记(七):优化代码