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`);
posted @ 2019-01-02 11:41  xuejianbest  阅读(1736)  评论(0编辑  收藏  举报