MySQL 关于表复制 insert into 语法

转自:http://kiven.196tuan.com/?p=136


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

两张表:insertTest和insertTest2,前者中有测试数据
create table insertTest(id int(4),name varchar(12));
insert into insertTest values(100,‘liudehua’);
insert into insertTest values(101,‘zhourunfa’);
insert into insertTest values(102,‘zhouhuajian’);
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) select id 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);
使用 dual 作表名,select 语句后面直接跟上要插入的字段的值。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL中,INSERT INTO语法用于向中插入新的行。通常的语法格式是: INSERT INTO 名 (列1, 列2, 列3, ...) VALUES (值1, 值2, 值3, ...); 然而,引用\[1\]中提到了一种特殊的语法形式,即使用"INSERT INTO 名 SET 列1=值1, 列2=值2, 列3=值3, ..."的形式进行插入操作。这种语法形式在MySQL中是支持的,并且可以成功插入新的行。 然而,需要注意的是,这种"INSERT INTO SET"的语法形式在其他数据库系统中可能不被支持。例如,引用\[2\]中提到,在PostgreSQL中是不支持这种语法形式的,会导致语法错误。 此外,引用\[3\]中的错误信息是由于语法错误导致的。在MySQL中,使用双引号来引用字符串值是不正确的,应该使用单引号。正确的语法应该是: INSERT INTO 名 SET 列名='值'; 总结起来,MySQL中的INSERT INTO语法通常使用"INSERT INTO 名 (列1, 列2, 列3, ...) VALUES (值1, 值2, 值3, ...)"的形式进行插入操作,但也支持特殊的"INSERT INTO 名 SET 列1=值1, 列2=值2, 列3=值3, ..."的形式。在其他数据库系统中,这种特殊的语法形式可能不被支持,需要根据具体的数据库系统来使用正确的语法。 #### 引用[.reference_title] - *1* *2* [mysql 语法 insert into set](https://blog.csdn.net/weixin_43084715/article/details/123876807)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [MySQLinsert into语句的6种写法](https://blog.csdn.net/weixin_42542420/article/details/113263856)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值