mysql ON DUPLICATE KEY UPDATE插入或者更新

tech2025-05-30  1

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

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

1,主键相同

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

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

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

 

上mybatis代码

<select id="batchUpdateOrInsert" parameterType="list"> insert into zn_comput_score (cpu_text, cpu_score) values <foreach collection="list" item="item" index="index" separator=","> (#{item.cpuText},#{item.cpuScore}) </foreach> ON DUPLICATE KEY UPDATE cpu_score = values(cpu_score) </select>

表字段设计

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

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

最新回复(0)