MySQL 關於表復制 insert into 語法的具體引見。本站提示廣大學習愛好者:(MySQL 關於表復制 insert into 語法的具體引見)文章只能為提供參考,不一定能成為您想要的結果。以下是MySQL 關於表復制 insert into 語法的具體引見正文
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 語句前面直接跟上要拔出的字段的值。