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`);