mysql使用on duplicate key update批量更新数据

创建测试---book科目表

CREATE TABLE `book` (
  `id` int NOT NULL AUTO_INCREMENT,
  `unique_code` varchar(30) NOT NULL,
  `book_name` varchar(20) DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `unique_code` (`unique_code`) USING BTREE COMMENT 'book unique_code'
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;

前提需要表中存在索引:如下 unique_code 即为索引

需求:需要导入数据到book表。 当book表中存在科目的数据时,update数据值,否则insert插入一条新记录。

以往做法:循环select表中的booke记录是否存在,存在则使用update;不存在则使用insert。
做法弊端:每处理一条记录需要操作两次数据库(select、update/insert)

优化做法:使用insert语句搭配 on duplicate key update使用。
做法注意:比如上面的需求,需要用到 book表 唯一 unique_code索引

一、执行如下命令

insert into book(
            unique_code,
           book_name
      ) values (
            'zs-001',
            '中文'
      ) on duplicate key update book_name='数学';

扫描二维码关注公众号,回复: 14763148 查看本文章

二、再次执行步骤一命令你会发现book_name值改变

 简单明白,通俗易懂~~

猜你喜欢

转载自blog.csdn.net/weixin_42415158/article/details/124572779