首页 > 数据库 >mysql将一个表的数据导入到另一个表

mysql将一个表的数据导入到另一个表

时间:2023-05-15 10:55:28浏览次数:57  
标签:导入到 name 一个 id 字段 mysql 目标 insertTest2 insertTest

 将一个表的数据插入到另外一个表中的几种情况如下:

1.如果2张表的字段一致,并且希望插入全部数据,可以用这种方法:
     INSERT INTO 目标表 SELECT * FROM 来源表;
     例如:

insert into insertTest select * from insertTest2;

2.如果只希望导入指定字段,可以用这种方法:
     INSERT INTO 目标表 (字段1, 字段2, ...) SELECT 字段1, 字段2,... FROM 来源表;(这里的话字段必须保持一致)
     例如:

insert into insertTest2(id,name) select id,name from insertTest2;

 注意:如果目标表与来源表主键值相同则会出现添加错误,主键值不同才能插入


3.如果您需要只导入目标表中不存在的记录,可以使用这种方法:   
    INSERT INTO 目标表 (字段1, 字段2, ...) SELECT 字段1, 字段2, ... FROM 来源表 
    WHERE not exists (select * from 目标表 where 目标表.比较字段  = 来源表.比较字段); 
   例如:
     1>.插入多条记录:

       insert into insertTest2(id,name) select id,name from insertTest
     where not exists (select * from insertTest2 where insertTest2.id = insertTest.id);


     2>.插入一条记录:

       insert into insertTest (id, name) SELECT 100,'liudehua'  FROM dual 
             WHERE not exists (select * from insertTest where insertTest.id = 100);

4、如果需要导入的目标表字段比来源表的字段多,将来源表的数据导入再加上几个字段组成目标表   的数据
  INSERT INTO 目标表 (目标字段1,目标字段2,字段1, 字段2,...)
     select 目标字段1,目标字段2, 字段1, 字段2,...  FROM来源表   
   目标字段1,目标字段2:这是目标表比来源表多出的字段
  例如:

    insert into insertTest2(目标字段1,目标字段2,id,name) select 目标字段1,
     目标字段2, id,name from insertTest  where insertTest2.id = insertTest.id;
     目标字段1,目标字段2:可以先设占位符,在设置值。也可以直接在语句中赋值
     insert into insertTest2(目标字段1,目标字段2,id,name) select  a1,
      a2, id,name from insertTest  where insertTest2.id=insertTest.id;

5、对上述4的解析
 

 select a1, a2, id,name from insertTest     


     这里在表 insertTest里本身没有a1,a2两个字段名,当使用这个查询语句时,会查 出 insertTest表的所有字段值,并在表数据的前面加上了列名为a1,a2的字段,并且列名为a1的值全为a1,列名为a2的值全为a2,并且a1,a2不能为变量,如果是变量,sql语句会把它当做表字段,而表中不存在这个字段,会报错

 总结:即可以向一个表中查询不存在的列名,这里不存在的列名必须是实际值或占位符,不能是变量

标签:导入到,name,一个,id,字段,mysql,目标,insertTest2,insertTest
From: https://www.cnblogs.com/shijiaoyun/p/17401207.html

相关文章

  • MySQL 存储过程&触发器&事务
    存储过程概念存储过程(StoredProcedure),是为了完成特定功能的SQL语句集。优点存储过程可以理解为shell脚本这类型的命令集输出工具,但是在底层,存储过程拥有更多的优点:语言的灵活性跟功能性更强,在原有基础之上可以插入控制语句、循环语句等让SQL语句的功能更强,能够完成更复杂的......
  • mysql查询某张表数据量
    SELECTtable_schema,table_nameAS'name',table_rowsAS'rows',concat(round(DATA_LENGTH/1024/1024,2),'MB')ASALL_DATA,concat(round(INDEX_LENGTH/1024/1024,2),'MB')ASALL_INDEX,......
  • java~"与运算"实现保留一个数的低8位
    int类型另外介绍int类型的封装类型是Integer类型,它是有符号的类型,即它有负数和正数两部分,最小为-232,最大值是232-1。int类型由32位二进制数组成,每4位二进制数表示为1位16进制数,每8位2进制数占用存储空间为1字节、即每2位16进制也占用1字节一个int类型的数字,占用32/8=4,占用的......
  • MySQL学习日志十四,数据库的备份
    数据库备份必要性1.保证重要数据不丢失2.数据转移3.MySQL数据库备份方法mysqldump备份工具1.数据库管理工具,如SQLyog2.直接拷贝数据库文件和相关配置文件3.mysqldump客户端作用:转储数据库搜集数据库进行备份将数据转移到另一个SQL服务器,不一定是MySQL服务器--导......
  • MySQL(四) 数据表的插入、更新、删除数据
    一、插入数据格式:INSERTINTO表名(字段名...)VALUES(值...);创建环境使用person表CREATETABLEperson(idINTUNSIGNEDNOTNULLAUTO_INCREMENT,nameCH......
  • MySQL学习日志十三,索引
    一、索引的作用1.提高查询速度2.确保数据的唯一性3.可以加速表和表之间的连接,实现表与表之间的参照完整性4.使用分组和排序子句进行数据检索时,可以显著减少分组和排序的时间5.全文检索字段进行搜索优化.二、分类1.主键索引(PrimaryKey)2.唯一索引(Unique)3.常规......
  • MySQL学习日志十二,事务
    一、事务要么都成功,要么都失败四个特性:原子性:不可再分割的工作单位,一个事务中要么都完成,要么都不完成一致性:从一致的状态转换到另一个一致的状态,事务前后的数据保持一致隔离性:屏蔽其他的事务,专注自己的事务,互不干扰持久性:存储在数据库的数据是永久的,事务一旦提交就不......
  • MySQL学习笔记:mycat2原理与实现
    mycat2官网:MyCat2(mycatone.top)参考学习视频这可能是B站唯一把数据库中间件Mycat2讲的如此深入透彻的教程!_哔哩哔哩_bilibili什么是mycat2?Mycat是开源社区在阿里Cobar基础上进行二次开发的数据库中间件,也是目前最流行的基于java语言编写的数据库中间件;是一个开源的分布式数据......
  • LabVIEW数据库Mysql数据库操作;增加-删除-更新-查询;数据管理程序,完整案例,可移植。
    LabVIEW数据库Mysql数据库操作;增加-删除-更新-查询;数据管理程序,完整案例,可移植。ID:9299673612213945......
  • MySQL学习日志十一,常用函数,聚合函数及分组过滤,数据库级别的MD5加密
    点我跳转到菜鸟的函数总结在这里举几个例子吧--数学运算SELECTABS(-52)--取绝对值SELECTCEILING(5.4160)--向上取整SELECTFLOOR(4631.449613)--向下取整SELECTRAND()--返回一个0-1之间的随机数SELECTSIGN(-4510)--判断数字的正负,正数返回1,负数返回-1一堆......