MySQL中INSERT+SELECT的使用方式
MySQL中INSERT+SELECT的使用
使用場景
通過一條sql語句實現(xiàn)從多個表中組合字段然后插入到另外的一個新表中。
1.兩表之間
從一張表中查出字段的值插入到另一張表中對應(yīng)的字段
INSERT INTO tab1(field1,field2) SELECT field1,field2 FROM tab2;
2.三表之間
從兩張表中查出字段的值插入到另一張表中對應(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.多表之間
從多張表中查出字段的值插入到另一張表中對應(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 ;通過join查詢將分別來自表tab2和表tab3的字段進行了組合,然后再通過select嵌套查詢插入到表tab1中,如果需要不止2個表,那么可以多個join的形式來組合字段。
需要注意的是嵌套查詢部分最后一定要有設(shè)置表別名。
這種方式要求目標(biāo)表必須存在。
還有一種不需要目標(biāo)表的存在,就是SELECT INTO
MySQL中SELECT INTO FROM的使用
作為另一種復(fù)制表數(shù)據(jù)的手段,其得到的結(jié)果與上述的insert into select是一樣。
不過select into不要求目標(biāo)表存在,目標(biāo)表會在查詢過程中自動創(chuàng)建。
select[column1,column2...] into [目標(biāo)表名] from [原始表名]
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Navicat如何遠程連接云服務(wù)器數(shù)據(jù)庫
這篇文章主要介紹了Navicat如何遠程連接云服務(wù)器數(shù)據(jù)庫,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-11-11
MySQL優(yōu)化GROUP BY(松散索引掃描與緊湊索引掃描)
這篇文章主要介紹了MySQL優(yōu)化GROUP BY(松散索引掃描與緊湊索引掃描),需要的朋友可以參考下2016-05-05
關(guān)于mysql中的json解析函數(shù)JSON_EXTRACT
這篇文章主要介紹了關(guān)于mysql中的json解析函數(shù)JSON_EXTRACT講解,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-07-07
MySQL使用ShardingSphere-JDBC實現(xiàn)數(shù)據(jù)分片
本文詳細(xì)介紹了如何使用ShardingSphere-JDBC進行MySQL分庫分表,包括垂直分庫、水平分庫和水平分表的實現(xiàn)方式,以及分片鍵的選擇、綁定表和廣播表的使用等,通過YAML配置,可以簡單高效地實現(xiàn)分片,解決單庫單表數(shù)據(jù)量過大問題,需要的朋友可以參考下2026-03-03

