insert语句批量插入去重

新建表格如下:

CREATE TABLE `organization3` (
  `org_id` varchar(30) NOT NULL COMMENT 'ID',
  `area_belong` varchar(20) DEFAULT NULL COMMENT '归属地市',
  PRIMARY KEY (`org_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

1. insert ignore

insert ignore 会自动忽略数据库已经存在的数据(根据主键或者唯一索引判断),如果没有数据就插入数据,如果有数据就跳过插入这条数据

INSERT IGNORE into organization3(area_belong,org_id) VALUES 
('3190','311130038311311000'),('3123','311130038311311000');

得到

2. replace into

replace into 首先尝试插入数据到表中,

如果发现表中已经有此行数据(根据主键或者唯一索引判断)则先删除此行数据,然后插入新的数据。 否则,直接插入新数据。

在上边的基础上执行以下SQL

REPLACE into organization3(area_belong,org_id) VALUES 
('9999','311130038311311000');

得到

3. insert on duplicate key update

如果发现了重复数据(根据主键或者唯一索引判断)则根据后边的update语句来更新字段,而不是报错

在上边的基础上执行以下SQL

insert into organization3(area_belong,org_id) VALUES 
('9999','311130038311311000') ON DUPLICATE KEY update area_belong = '8888';

得到

posted @ 2023-02-20 15:50  企业级理解  阅读(429)  评论(0编辑  收藏  举报