MySQL 把查詢結(jié)果更新或者插入到新表
摘要:在MySQL數(shù)據(jù)庫,把查詢到的多條記錄復(fù)制到另一張表中。復(fù)制通常包括兩種場景,一種是使用update命令更新舊數(shù)據(jù),另一種是使用insert命令插入新記錄。
需求背景:在某些業(yè)務(wù)中,需要把查詢到的多條記錄復(fù)制到另一張表中來滿足業(yè)務(wù)需求。復(fù)制通常包括兩種場景,一種是使用update命令更新舊數(shù)據(jù),另一種是使用insert命令插入新記錄。
insert插入
??INSERT語句可以將SELECT語句查詢出來的數(shù)據(jù)插入到另一張表中,即可快速地從一張或多張表中向另一張表中插入滿足條件的多條記錄。這樣,可以方便不同表之間進(jìn)行數(shù)據(jù)交換。基本的語法如下:
INSERT INTO table_name1(字段列表1)
SELECT 字段列表2 FROM table_name2 WHERE 條件表達(dá)式 LIMIT 0,n;
table_name1:表示記錄插入到哪個表中。
字段列表1:表示為哪些字段賦值。
字段列表2:表示從表中查詢出哪些字段的數(shù)據(jù)。
table_name2:表示記錄是從哪個表中查詢出來的。
條件表達(dá)式:表示設(shè)置SELECT語句的查詢條件。
指定條數(shù):LIMIT 0,n 用于指定查詢出多少條記錄,即從第幾條開始返回。
??將 table_name2 中查詢出來的記錄插入到 table_name1 中以后,table_name2中原來的記錄保持不變。
??溫馨提示:使用上述語法時,必須保證“字段列表1”和“字段列表2”中的字段個數(shù)相等,同時,也必須保證每個對應(yīng)字段的數(shù)據(jù)類型是一樣的。如果數(shù)據(jù)類型不一樣,數(shù)據(jù)庫會報錯并阻止INSERT語句向下執(zhí)行。
??案例:
INSERT INTO t1(id,user_name,score)
SELECT t2.id,t2.user_name,t2.score FROM t2 where t2.user_name = 'Wiener';
??從t2表中查詢出user_name為Wiener的三個字段id、user_name和score,將其插入到t1表中id、user_name和score。
update更新
??多表更新時,可以使用update命令進(jìn)行操作,語法比較簡單,請參考如下SQL語句:
UPDATE t1,t2
SET t1.score = t2.score
WHERE t1.id = t2.id AND t2.score IS NOT NULL;
結(jié)束語
??以上就是這篇文章的全部內(nèi)容了,希望本文對大家的學(xué)習(xí)或者工作具有一定的參考和學(xué)習(xí)價值;如果有疑問,大家可以在評論區(qū)留言交流,也希望大家多多點(diǎn)贊關(guān)注。謝謝大家對樓蘭胡楊的支持!
Buy me a coffee. ?Get red packets.
浙公網(wǎng)安備 33010602011771號