美文网首页
Mysql `DUPLICATE KEY UPDATE` 技巧

Mysql `DUPLICATE KEY UPDATE` 技巧

作者: 大猪大猪 | 来源:发表于2018-09-29 14:44 被阅读49次

mongo中会有upsert,Mysql只能使用DUPLICATE KEY UPDATE来实现,发现数据条数减少,而且数据不正确。经过进一步的排查,发现使用DUPLICATE KEY UPDATE是有技巧的。

技巧

DUPLICATE KEY UPDATE是建立在唯一索引之上的,也就是组成的key必需是唯一的,也就是要符合我们的条件。

使用

INSERT INTO `demo`(`a`,`b`,`c`,`value`) VALUES('admin','admin','admin',1) ON DUPLICATE KEY UPDATE `value`=`value`+1

要想只更新value的值,abc所组合的字段必需要建立唯一索引。

CREATE TABLE `plan0920_report_copy1` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `a` varchar(128) NOT NULL DEFAULT '' COMMENT 'a',
  `b` varchar(128) NOT NULL DEFAULT '' COMMENT 'b',
  `c` varchar(128) NOT NULL DEFAULT '' COMMENT 'c',
  `value` bigint(20)  NOT NULL COMMENT 'value',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uidx_a_b_c` (`a`,`b`,`c`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=50 DEFAULT CHARSET=utf8mb4 COMMENT='demo 表';

索引结构应该如上所述

UNIQUE KEY `uidx_a_b_c` (`a`,`b`,`c`) USING BTREE

这样就保证了数据是唯一的

相关文章

网友评论

      本文标题:Mysql `DUPLICATE KEY UPDATE` 技巧

      本文链接:https://www.haomeiwen.com/subject/utzvoftx.html