MySQL 關(guān)于表復(fù)制 insert into 語(yǔ)法的詳細(xì)介紹
更新時(shí)間:2013年07月02日 11:57:44 作者:
本篇文章是對(duì)MySQL中關(guān)于表復(fù)制insert into語(yǔ)法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
web開(kāi)發(fā)中,我們經(jīng)常需要將一個(gè)表的數(shù)據(jù)插入到另外一個(gè)表,有時(shí)還需要指定導(dǎo)入字段,設(shè)置只需要導(dǎo)入目標(biāo)表中不存在的記錄,雖然這些都可以在程序中拆分成簡(jiǎn)單sql來(lái)實(shí)現(xiàn),但是用一個(gè)sql的話,會(huì)節(jié)省大量代碼。下面我以mysql數(shù)據(jù)庫(kù)為例分情況一一說(shuō)明:
兩張表:insertTest和insertTest2,前者中有測(cè)試數(shù)據(jù)
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張表的字段一致,并且希望插入全部數(shù)據(jù),可以用這種方法:
INSERT INTO 目標(biāo)表 SELECT * FROM 來(lái)源表;
insert into insertTest select * from insertTest2;
2.如果只希望導(dǎo)入指定字段,可以用這種方法:
INSERT INTO 目標(biāo)表 (字段1, 字段2, …) SELECT 字段1, 字段2, … FROM 來(lái)源表;
注意字段的順序必須一致。
insert into insertTest2(id) select id from insertTest2;
3.如果您需要只導(dǎo)入目標(biāo)表中不存在的記錄,可以使用這種方法:
INSERT INTO 目標(biāo)表
(字段1, 字段2, …)
SELECT 字段1, 字段2, …
FROM 來(lái)源表
WHERE not exists (select * from 目標(biāo)表
where 目標(biāo)表.比較字段 = 來(lái)源表.比較字段);
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 語(yǔ)句后面直接跟上要插入的字段的值。
兩張表:insertTest和insertTest2,前者中有測(cè)試數(shù)據(jù)
復(fù)制代碼 代碼如下:
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張表的字段一致,并且希望插入全部數(shù)據(jù),可以用這種方法:
INSERT INTO 目標(biāo)表 SELECT * FROM 來(lái)源表;
復(fù)制代碼 代碼如下:
insert into insertTest select * from insertTest2;
2.如果只希望導(dǎo)入指定字段,可以用這種方法:
復(fù)制代碼 代碼如下:
INSERT INTO 目標(biāo)表 (字段1, 字段2, …) SELECT 字段1, 字段2, … FROM 來(lái)源表;
注意字段的順序必須一致。
復(fù)制代碼 代碼如下:
insert into insertTest2(id) select id from insertTest2;
3.如果您需要只導(dǎo)入目標(biāo)表中不存在的記錄,可以使用這種方法:
復(fù)制代碼 代碼如下:
INSERT INTO 目標(biāo)表
(字段1, 字段2, …)
SELECT 字段1, 字段2, …
FROM 來(lái)源表
WHERE not exists (select * from 目標(biāo)表
where 目標(biāo)表.比較字段 = 來(lái)源表.比較字段);
1>.插入多條記錄:
復(fù)制代碼 代碼如下:
insert into insertTest2
(id,name)
select id,name
from insertTest
where not exists (select * from insertTest2
where insertTest2.id=insertTest.id);
2>.插入一條記錄:
復(fù)制代碼 代碼如下:
insert into insertTest
(id, name)
SELECT 100, ‘liudehua'
FROM dual
WHERE not exists (select * from insertTest
where insertTest.id = 100);
使用 dual 作表名,select 語(yǔ)句后面直接跟上要插入的字段的值。
相關(guān)文章
MySQL的InnoDB擴(kuò)容及ibdata1文件瘦身方案完全解析
在使用InnoDB存儲(chǔ)引擎后,MySQL的ibdata1文件常常會(huì)占據(jù)大量存儲(chǔ)空間,這里我們就為大家?guī)?lái)MySQL的InnoDB擴(kuò)容及ibdata1文件瘦身方案完全解析:2016-06-06mysql代碼執(zhí)行結(jié)構(gòu)實(shí)例分析【順序、分支、循環(huán)結(jié)構(gòu)】
這篇文章主要介紹了mysql代碼執(zhí)行結(jié)構(gòu),結(jié)合實(shí)例形式分析了mysql順序結(jié)構(gòu)、分支結(jié)構(gòu)與循環(huán)結(jié)構(gòu)相關(guān)原理、用法及操作注意事項(xiàng),需要的朋友可以參考下2020-04-04Mysql之如何實(shí)現(xiàn)行列轉(zhuǎn)換
這篇文章主要介紹了Mysql之如何實(shí)現(xiàn)行列轉(zhuǎn)換問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-06-06MySQL批量修改表及表內(nèi)字段排序規(guī)則舉例詳解
在MySQL中字段排序規(guī)則(也稱為字符集和排序規(guī)則)用于確定如何比較和排序字符串,下面這篇文章主要給大家介紹了關(guān)于MySQL批量修改表及表內(nèi)字段排序規(guī)則的相關(guān)資料,需要的朋友可以參考下2024-05-05Mysql如何在linux中實(shí)現(xiàn)定時(shí)備份
這篇文章主要介紹了Mysql如何在linux中實(shí)現(xiàn)定時(shí)備份,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-09MySQL數(shù)據(jù)庫(kù)運(yùn)維之?dāng)?shù)據(jù)恢復(fù)的方法
本篇文章主要介紹了MySQL數(shù)據(jù)庫(kù)運(yùn)維之?dāng)?shù)據(jù)恢復(fù)的方法,此處總結(jié)一下恢復(fù)方案,并結(jié)合數(shù)據(jù)庫(kù)的二進(jìn)制日志做下數(shù)據(jù)恢復(fù)的示范。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-06-06MySQL20個(gè)高性能架構(gòu)設(shè)計(jì)原則(值得收藏)
這篇文章主要介紹了MySQL20個(gè)高性能架構(gòu)設(shè)計(jì)原則,幫助大家更好的理解和使用MySQL,感興趣的朋友可以了解下2020-08-08