常用的四種情況,用表A ,表B 來演示。目標(biāo)表為B 表,來源表為A 表
1.如果兩個(gè)表的字段一致,并且要求插入全表。
insert into 目標(biāo)表 select * from 來源表;
insert into testB select * from testA
2.如果僅僅想插入相同字段的值。
insert into 目標(biāo)表 (字段1,字段2) select 字段1,字段2 from 來源表;
insert into testB ( name,class) select name,class from testA;
3.如果導(dǎo)入目標(biāo)表不存在的記錄。
INSERTINTO 目標(biāo)表 (字段1, 字段2, ...) SELECT字段1, 字段2, ... FROM來源表
WHERE not exists (select * from目標(biāo)表 where 目標(biāo)表.比較字段 =來源表.比較字段);
insert into testB (name,class) where name,type from testA where not exists (select *
from testB.class = testA.name)
4.如果導(dǎo)入目標(biāo)表中,想自己設(shè)置某個(gè)字段的值。
INSERT INTO 目標(biāo)表 (目標(biāo)字段1,目標(biāo)字段2,字段1, 字段2,...)select 目標(biāo)字段1,目標(biāo)字段2,字段1, 字段2,... FROM來源表
目標(biāo)字段1,目標(biāo)字段2:這是目標(biāo)表比來源表多出的字段
INSERT INTO testB(name,type,address) SELECT name,status,'2019-12' FROM
testA WHERE NOT EXISTS (SELECT * FROM testB WHERE testB.type=testA.`status`)
總結(jié):即可以向一個(gè)表中查詢不存在的列名,這里不存在的列名必須是實(shí)際值或占位符,不能是變量.(這里占位符實(shí)質(zhì)上是個(gè)字符串)
如果是變量則查詢的是表A中的字段。但是表A中沒有該字段,所以會(huì)報(bào)錯(cuò)。