MySQL從一個(gè)表中查出數(shù)據(jù)并插入到另一個(gè)表的詳細(xì)處理方案
PS:來(lái)源表:t_source、目標(biāo)表:t_target
第一種
來(lái)源表和目標(biāo)表字段完全一致
insert into t_target select * from t_source;
第二種
來(lái)源表和目標(biāo)表字段部分一致,只想導(dǎo)入來(lái)源表部分字段到目標(biāo)表
insert into t_target(字段1,字段2,字段3, ...) select 字段1,字段2,字段3, ... from t_source;
第三種
只需要導(dǎo)入目標(biāo)表中不存在的數(shù)據(jù)
insert into t_target (字段1, 字段2, ...) SELECT 字段1, 字段2, ... FROM t_source WHERE not exists (select * from t_target where t_target.比較字段 = t_source.比較字段);
下面是一個(gè)完整的示例,展示了如何將一張名為 source_table 的源表的數(shù)據(jù)更新到一張名為 target_table 的目標(biāo)表:
-- 創(chuàng)建目標(biāo)表 CREATE TABLE target_table ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50), age INT ); -- 確定連接條件 ALTER TABLE target_table ADD COLUMN source_table_id INT; UPDATE target_table SET source_table_id = source_table.id FROM target_table INNER JOIN source_table ON target_table.name = source_table.name; -- 更新數(shù)據(jù) UPDATE target_table INNER JOIN source_table ON target_table.source_table_id = source_table.id SET target_table.age = source_table.age;
以上是一個(gè)簡(jiǎn)單的示例,你可以根據(jù)實(shí)際情況進(jìn)行修改和擴(kuò)展。
總結(jié)
通過(guò)以上步驟,我們可以將一張表的數(shù)據(jù)更新到另一張表。首先,我們需要?jiǎng)?chuàng)建一個(gè)目標(biāo)表來(lái)接收數(shù)據(jù),然后確定源表和目標(biāo)表之間的連接條件,最后使用 UPDATE 語(yǔ)句將數(shù)據(jù)更新到目標(biāo)表。
附:MySQL查詢結(jié)果復(fù)制到新表的方法(更新、插入)
MySQL中可以將查詢結(jié)果復(fù)制到另外的一張表中,復(fù)制的話通常有兩種情況,一種是更新已有的數(shù)據(jù),另一種是插入一條新記錄。下面通過(guò)例子來(lái)說(shuō)明。首先構(gòu)建兩個(gè)測(cè)試表。
表t1:
表t2:
1、如果t2表中存在score值,將score更新到t1表中。方法如下:
UPDATE t1,t2 SET t1.score = t2.score WHERE t1.id = t2.id AND t2.score IS NOT NULL
這就是將查詢結(jié)果作為條件更新另一張表,當(dāng)然,t2也可以是更為復(fù)雜的一個(gè)查詢結(jié)果而不是一個(gè)具體的表。
2、將t1表的username更新至t2表,將t2表的score更新至t1表。方法如下:
UPDATE t1,t2 SET t1.score = t2.score,t2.username = t1.username WHERE t1.id = t2.id
這個(gè)方法其實(shí)跟上面的方法類似,可以同時(shí)更新兩個(gè)表的數(shù)據(jù),即做表部分?jǐn)?shù)據(jù)的互相復(fù)制、更新。
3、將t2表的查詢結(jié)果插入到t1表中。方法如下:
INSERT INTO t1(id,username,score) SELECT t2.id,t2.username,t2.score FROM t2 where t2.username = 'lucy'
前面兩種方式是更新表的記錄,這種方式是插入一條新的記錄。其實(shí),從腳本可以看出,這個(gè)方法就是將查詢和插入兩個(gè)步驟合二為一。
用一個(gè)表更新另一個(gè)表
1、更新一個(gè)字段
方法一
update table1 set field1=table2.field1 from table2 where table1.id=table2.id
方法二
將兩張表以內(nèi)連接的方式進(jìn)行查詢更新
UPDATE tableName1 t1 LEFT JOIN tableName2 t2 ON t2.id = t1.id SET t1.lpEntityType2 = t2.lpEntityType2
方法三
update A m,B mp set m.job_type = mp.job_type where mp.mobile= m.mobile;
2、更新多個(gè)字段
方法一
update B, A set B.username = A.username, B.phone = A.phone where B.userId = A.userId
方法二
將兩張表以內(nèi)連接的方式進(jìn)行查詢更新
update B join A on B.userId=A.userId set B.username = A.username, B.phone = A.phone
MYSQL 更新一個(gè)表字段為另外一張表字段
1、UPDATE m_node_device mnd SET mnd.enterprise_id = (SELECT md.enterprise_id FROM m_device md WHERE mnd.device_id = md.id)
2、-- 更新表字段為查詢結(jié)果中的某一個(gè)字段
UPDATE m_device md, ( SELECT mi.img_url AS aa, mi.device_id AS bb FROM m_device_img mi INNER JOIN m_device_type_attr ma ON ma.id = mi.device_type_attr_id WHERE ma.attr_name = '設(shè)備銘牌' ) b SET md.nameplate_img = b.aa WHERE md.id = b.bb AND md.nameplate_img = '' and md.is_deleted = 0
到此這篇關(guān)于MySQL從一個(gè)表中查出數(shù)據(jù)并插入到另一個(gè)表的詳細(xì)處理方案的文章就介紹到這了,更多相關(guān)MySQL查出數(shù)據(jù)插入另一個(gè)表內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MySQL數(shù)據(jù)表字段操作指南之添加、修改與刪除方法
這篇文章主要介紹了MySQL中使用ALTER TABLE語(yǔ)句修改數(shù)據(jù)表結(jié)構(gòu)的方法,包括添加、修改和刪除字段,通過(guò)實(shí)例演示了如何高效地管理數(shù)據(jù)表結(jié)構(gòu),需要的朋友可以參考下2024-12-12MySQL數(shù)據(jù)定義語(yǔ)言DDL的基礎(chǔ)語(yǔ)句
這篇文章主要介紹了MySQL數(shù)據(jù)定義語(yǔ)言DDL的基礎(chǔ)語(yǔ)句,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08MySql利用父id遞歸向下查詢子節(jié)點(diǎn)的方法實(shí)例
項(xiàng)目中遇到一個(gè)需求,要求查處菜單節(jié)點(diǎn)的所有節(jié)點(diǎn),在網(wǎng)上查了一下,大多數(shù)的方法用到了存儲(chǔ)過(guò)程,由于線上環(huán)境不能隨便添加存儲(chǔ)過(guò)程,所以自己寫一個(gè),這篇文章主要給大家介紹了關(guān)于MySql利用父id遞歸向下查詢子節(jié)點(diǎn)的相關(guān)資料,需要的朋友可以參考下2022-03-03MySQL數(shù)據(jù)庫(kù)線上修改表結(jié)構(gòu)的方法
MySQL有一個(gè)把鎖,叫做MDL元數(shù)據(jù)鎖,當(dāng)對(duì)表修改的時(shí)候,會(huì)自動(dòng)給表加上這把鎖,也就是不需要自己顯式使用,這篇文章主要介紹了MySQL數(shù)據(jù)庫(kù)線上修改表結(jié)構(gòu)的方法,需要的朋友可以參考下2022-09-09MySQL安全配置向?qū)ysql_secure_installation詳解
這篇文章主要介紹了MySQL安全配置向?qū)ysql_secure_installation各項(xiàng)配置的含義,并依據(jù)經(jīng)驗(yàn)給予一了一些建議,需要的朋友可以參考下2014-03-03MySql UNION 一行轉(zhuǎn)多列的實(shí)現(xiàn)示例
在MySQL命令行中,有時(shí)候我們會(huì)遇到一行的數(shù)據(jù)需要以多列的形式呈現(xiàn)的情況,本文就詳細(xì)介紹了一下一行轉(zhuǎn)多列的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下2023-08-08