MySQL去重插入方法
1. 背景
向数据库插入数据,希望去重插入。
2. 操作一下
一般去重插入有两种策略:
- 重复不插入
- 重复则替换(更新)
准备表:
CREATE TABLE `user_info` (`id` int(11) NOT NULL COMMENT 'id',`username` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '姓名',`idcard` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '身份证号',`nick_name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '昵称',`remark` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '备注',PRIMARY KEY (`id`) USING BTREE,UNIQUE INDEX `idcard`(`idcard`) USING BTREE COMMENT '唯一身份标识'
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
其中 id 是主键, idcard是唯一索引。
2.1 重复不插入策略
2.1.1 ignore
-- INSERT IGNORE
INSERT IGNORE INTO user_info (id, username, idcard, nick_name) VALUES (3,'zhangsan', '002', '');
此方案要求有主键或唯一索引,且是主键或唯一索引重复方可触发。
2.1.2 条件判断
-- NOT EXISTS 与ignore类似 重复则不插入
INSERT INTO user_info (id, username, idcard, nick_name) SELECT 1,'张无忌', '001', '-' FROM DUAL WHERE NOT EXISTS (SELECT idcard FROM user_info WHERE idcard = '001') ;
此方案不需要主键或唯一索引,当满足不存在条件时,执行插入
2.2 重复替换策略
2.2.1 ON duplicate KEY UPDATE
-- ON duplicate KEY UPDATE
INSERT INTO user_info (id, username, idcard, nick_name) VALUES (3,'zhangsan', '002', '哈哈') ON DUPLICATE KEY UPDATE username = '王五3',nick_name = '李白';
此方案要求有主键或唯一索引,且是主键或唯一索引重复方可触发。
注意:条件触发后,将是后面update语句生效。
2.2.2 REPLACE INTO
-- REPLACE INTO
REPLACE INTO user_info (id, username, idcard, nick_name) VALUES (1,'张无忌', '001', '-');
此方案要求有主键或唯一索引,且是主键或唯一索引重复方可触发。触发后将替换原有数据。
另外,重复替换策略语句生效后将造成两条数据影响。
MySQL去重插入方法相关推荐
- 做了6年的Java,mysql去重查询方法
前言: 求职季在即,技巧千万条,硬实力才是关键,听说今年疫情大环境不好,更要好好准备才行.MySQL是Java程序员面向高级的必备技能,很多朋友在面试时经常在这里折戟沉沙,饮恨不已.熟练掌握MySQL ...
- mysql去重查询的三种方法
文章目录 前言 一.插入测试数据 二.剔除重复数据方法 1.方法一:使用distinct 2.方法二:使用group by 3.方法三:使用开窗函数 总结 前言 数据库生成环境中经常会遇到表中有重复的 ...
- mysql如何防止插入重复数据_防止MySQL重复插入数据的三种方法
新建表格 CREATE TABLE `person` ( `id` int NOT NULL COMMENT '主键', `name` varchar(64) CHARACTER SET utf8 C ...
- mysql 禁止插入重复数据_防止MySQL重复插入数据的三种方法
新建表格 CREATE TABLE `person` ( `id` int NOT NULL COMMENT '主键', `name` varchar(64) CHARACTER SET utf8 C ...
- mysql去重函数的使用方法_MySQL中使用去重distinct方法的示例详解
一 distinct 含义:distinct用来查询不重复记录的条数,即distinct来返回不重复字段的条数(count(distinct id)),其原因是distinct只能返回他的目标字段,而 ...
- python随机数据库_Python实现生成随机数据插入mysql数据库的方法
本文实例讲述了Python实现生成随机数据插入mysql数据库的方法.分享给大家供大家参考,具体如下: 运行结果: 实现代码: import random as r import pymysql fi ...
- mysql 批量插入数据方法_mysql大批量插入数据的4种方法示例
前言 本文主要给大家介绍了关于mysql大批量插入数据的4种方法,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧 方法一:循环插入 这个也是最普通的方式,如果数据量不是很大,可以使用, ...
- php mysql 去重_mysql去重的两种方法实例详解
这篇文章主要介绍了mysql去重的两种方法详解及实例代码的相关资料,这里对去重的两种方法进行了一一实例详解,需要的朋友可以参考下 mysql去重 方法一: 在使用MySQL时,有时需要查询出某个字段不 ...
- node.js中mysql批量插入更新的三种方法
[背景]在项目中遇到一个批量插入数据的需求,由于之前写过的sql语句都是插入一个对象一条数据,于是去网上搜关键词 "sql批量插入"."mysql批量插入"等, ...
最新文章
- 判断奇偶microsoft visual basic_#梅园# 在心理学上面如何判断一个男生暗恋你的表现...
- opennms mysql_MySQL用户工具
- 条件随机场(CRF)相关理论知识
- JeecgBoot单体升级微服务之一
- Learn OpenGL(一)图形渲染管线(Pipeline)
- 探索python--Robert J. Brunner
- 关于SQL92标准和Sybase,SQLServer2000,Oracle的数据类型对比关系
- java生成图表_java实现将数据生成图表至excel导出
- 计算机 网络发现不了电脑,win10网络发现已关闭网络计算机和设备不可见怎么办?...
- TCP连接大量CLOSE_WAIT状态问题排查
- 好佳居窗帘十大品牌 窗帘选配有什么方法
- 【汇正财经】上证50逆势收涨,大盘健康震固
- 星火计划 | Apache InLong一站式大数据接入平台沙龙火热报名中
- python 制作抽奖箱_抽奖箱怎么做
- Debian如何更换apt源
- AVX | 关于RC电路耦合、相移、滤波、微分、积分的那些事儿~
- EasyAR_实现扫描识别图播放视频
- 基于python实现openai可结合上下文的问答,含html在线版
- Symantec 和sep卸载密码方法
- Python使用Selenium WebDriver的入门介绍及安装教程