mysql ON DUPLICATE KEY UPDATE插入或者更新

旧城等待, 2022-12-03 15:45 312阅读 0赞

对于已经存在的数据,进行更新操作,对于不存在数据新增操作;

这里有个判断已经存在的数据,什么样的数据才能是已经存在的呢….

1,主键相同

2,对于设置唯一(unique key)的字段的表,已经存在相同的字段

所以,对于主键自增或者uuid的主键,不存在update操作,所以只能在unique key上做文章…

将数据库可以作为key的字段设置为唯一,这样就相当于是使用Map的功能进行了….

上mybatis代码

  1. <select id="batchUpdateOrInsert" parameterType="list">
  2. insert into zn_comput_score
  3. (cpu_text, cpu_score)
  4. values
  5. <foreach collection="list" item="item" index="index" separator=",">
  6. (#{item.cpuText},#{item.cpuScore})
  7. </foreach>
  8. ON DUPLICATE KEY UPDATE
  9. cpu_score = values(cpu_score)
  10. </select>

表字段设计

  1. CREATE TABLE `comput_score` (
  2. `id` int(11) NOT NULL AUTO_INCREMENT,
  3. `cpu_text` varchar(255) DEFAULT NULL,
  4. `cpu_score` varchar(255) DEFAULT NULL,
  5. PRIMARY KEY (`id`) USING BTREE,
  6. UNIQUE KEY `index_cpu_text` (`cpu_text`) USING BTREE COMMENT 'cpu_text作为唯一索引执行更新插入操作'
  7. ) ENGINE=InnoDB AUTO_INCREMENT=249844 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;

所以结果就应该是这样的…当然验证也是这样的

发表评论

表情:
评论列表 (有 0 条评论,312人围观)

还没有评论,来说两句吧...

相关阅读