MySQL中INSERT+SELECT的使用方式
MySQL中INSERT+SELECT的使用
使用場(chǎng)景
通過(guò)一條sql語(yǔ)句實(shí)現(xiàn)從多個(gè)表中組合字段然后插入到另外的一個(gè)新表中。
1.兩表之間
從一張表中查出字段的值插入到另一張表中對(duì)應(yīng)的字段
INSERT INTO tab1(field1,field2) SELECT field1,field2 FROM tab2;
2.三表之間
從兩張表中查出字段的值插入到另一張表中對(duì)應(yīng)的字段
INSERT INTO tab1 (field1, field2) SELECT * FROM (SELECT tab2.field1, tab3.field2 FROM tab2 JOIN tab3 ON tab2.field = tab3.filed) AS tab ;
3.多表之間
從多張表中查出字段的值插入到另一張表中對(duì)應(yīng)的字段
INSERT INTO tab1 (field1, field2, field3, ... ) SELECT * FROM (SELECT tab2.field1, tab3.field2, tab4.field3, ... FROM tab2 JOIN tab3 ON tab2.field = tab3.filed JOIN tab4 ON tab2.field = tab4.filed ... ) AS tab ;
通過(guò)join查詢將分別來(lái)自表tab2和表tab3的字段進(jìn)行了組合,然后再通過(guò)select嵌套查詢插入到表tab1中,如果需要不止2個(gè)表,那么可以多個(gè)join的形式來(lái)組合字段。
需要注意的是嵌套查詢部分最后一定要有設(shè)置表別名。
這種方式要求目標(biāo)表必須存在。
還有一種不需要目標(biāo)表的存在,就是SELECT INTO
MySQL中SELECT INTO FROM的使用
作為另一種復(fù)制表數(shù)據(jù)的手段,其得到的結(jié)果與上述的insert into select是一樣。
不過(guò)select into不要求目標(biāo)表存在,目標(biāo)表會(huì)在查詢過(guò)程中自動(dòng)創(chuàng)建。
select[column1,column2...] into [目標(biāo)表名] from [原始表名]
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
MySQL對(duì)limit查詢語(yǔ)句的優(yōu)化方法
這篇文章主要介紹了MySQL對(duì)limit查詢語(yǔ)句的優(yōu)化方法,分別講解了offset參數(shù)比較小和offset參數(shù)比較大的時(shí)候,如何優(yōu)化查詢語(yǔ)句,需要的朋友可以參考下2014-07-07mysql實(shí)現(xiàn)設(shè)置定時(shí)任務(wù)的方法分析
這篇文章主要介紹了mysql實(shí)現(xiàn)設(shè)置定時(shí)任務(wù)的方法,結(jié)合實(shí)例形式分析了mysql定時(shí)任務(wù)相關(guān)的事件計(jì)劃設(shè)置與存儲(chǔ)過(guò)程使用等操作技巧,需要的朋友可以參考下2019-10-10Windows11下MySQL?8.0.29?安裝配置方法圖文教程
這篇文章主要為大家詳細(xì)介紹了Windows11下MySQL?8.0.29?安裝配置方法圖文教程,文中安裝步驟介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-07-07詳解MySQL實(shí)時(shí)同步到Oracle解決方案
這篇文章主要介紹了詳解MySQL實(shí)時(shí)同步到Oracle解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03