1. 程式人生 > >MySQL:insert若主鍵重複則update

MySQL:insert若主鍵重複則update

插入新紀錄,若存在則update已有記錄:

replace into是若存在則把原紀錄刪除再插入,其他欄位會改變(按照新給的資料,若新紀錄中相應欄位沒提供則更新為預設值)。

insert into ...on duplicate key update是若存在則更新已有欄位,其他欄位不變。

replace into table (id,dr) values (1,'2'),(2,'3'),...(x,'y');

insert into table (id,dr1,dr2) values  (1,'2','a'),(2,'3','b'),...(x,'y','3') on
duplicate key update dr1=values(dr1), dr2=values(dr2);

將z2庫中z2t表的資料更新為z1庫中z1t表資料。
此同步若z2t表中不存在則插入一條一模一樣的資料(包括所有欄位),若存在則只更新給出的欄位(name和age)。

insert into z2.z2t
  select * from z1.z1t 
on duplicate key update 
`name`=values(`name`),
`age`=values(`age`);