对数据库进行操作时,我们经常会遇到数据增量更新的场景。比如线上数据迁移,需要将老数据合并进新数据中。原先我的做法是在插入更新之前,先查询新数据中是否有这部分数据,如果有,则更新部分值,如果没有则插入老数据至新表。
create table _test_duplicate_key
(
a varchar(255) not null
primary key,
b varchar(255) null,
c int null
);
INSERT INTO _test_duplicate_key (a, b, c) VALUES ('a', 'b', 1) ON DUPLICATE KEY UPDATE c = c+1;
mysql> select * from _test_duplicate_key;
+---+------+------+
| a | b | c |
+---+------+------+
| a | b | 1 |
+---+------+------+
1 row in set (0.00 sec)
mysql> select * from _test_duplicate_key;
+---+------+------+
| a | b | c |
+---+------+------+
| a | b | 2 |
+---+------+------+
1 row in set (0.00 sec)
好看的人都点了在看
文章转载自鸡仔说,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。