MySQL從一個(gè)表中查出數(shù)據(jù)并插入到另一個(gè)表的詳細(xì)處理方案
PS:來源表:t_source、目標(biāo)表:t_target
第一種
來源表和目標(biāo)表字段完全一致
insert into t_target select * from t_source;
第二種
來源表和目標(biāo)表字段部分一致,只想導(dǎo)入來源表部分字段到目標(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é)
通過以上步驟,我們可以將一張表的數(shù)據(jù)更新到另一張表。首先,我們需要?jiǎng)?chuàng)建一個(gè)目標(biāo)表來接收數(shù)據(jù),然后確定源表和目標(biāo)表之間的連接條件,最后使用 UPDATE 語句將數(shù)據(jù)更新到目標(biāo)表。
附:MySQL查詢結(jié)果復(fù)制到新表的方法(更新、插入)
MySQL中可以將查詢結(jié)果復(fù)制到另外的一張表中,復(fù)制的話通常有兩種情況,一種是更新已有的數(shù)據(jù),另一種是插入一條新記錄。下面通過例子來說明。首先構(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 5.7 docker 主從復(fù)制架構(gòu)搭建教程
這篇文章主要為大家詳細(xì)介紹了mysql 5.7 docker 主從復(fù)制架構(gòu)搭建教程,感興趣的小伙伴們可以參考一下2016-07-07
教你巧用mysql位運(yùn)算解決多選值存儲(chǔ)的問題
如果你不知道什么是位運(yùn)算的話,那么請(qǐng)你先去看看基礎(chǔ)的C語言教程吧,下面這篇文章主要給大家介紹了關(guān)于如何巧用mysql位運(yùn)算解決多選值存儲(chǔ)問題的相關(guān)資料,需要的朋友可以參考下2022-02-02
Mysql?InnoDB中B+樹索引使用注意事項(xiàng)
這篇文章主要為大家介紹了Mysql?InnoDB中B+樹索引的注意事項(xiàng),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05
MySQL怎么實(shí)現(xiàn)原子性的流程詳解(以UPDATE為例)
原子性是事務(wù)的其中一個(gè)特性,指的是要么全部執(zhí)行完,要么全都不執(zhí)行,這篇文章主要介紹了MySQL怎么實(shí)現(xiàn)原子性(以UPDATE為例)的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2025-08-08
mysql導(dǎo)出指定數(shù)據(jù)或部份數(shù)據(jù)的方法
mysql雖然可以使用mysqldump來進(jìn)行數(shù)據(jù)的到處,可是在很多場(chǎng)合的需求都不一樣,比如我只要導(dǎo)出某個(gè)字段呢?只要導(dǎo)出某些我需要的數(shù)據(jù)呢?2014-03-03

