mysql insert 存在即不插入语法说明


Posted in MySQL onMarch 25, 2022

insert 存在即不插入语法

介绍三种方式

第一种:replace into

replace into table(id, name) values(1, '张三') ;
/*或者*/
replace into table(id, name) select 1, '张三' ;

replace into 跟 insert 功能类似。

不同点在于:replace into 首先尝试插入数据到表中

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

2.否则,直接插入新数据。

要注意的是:插入数据的表必须有主键或者是唯一索引!

否则的话,replace into 会直接插入数据,这将导致表中出现重复的数据。

第二种:DUAL临时表

insert into table(id, name)
select null, '张三' from DUAL
where not exists (select id from table where name = '张三') ;

其中的 DUAL 是一个临时表,不需要物理创建,直接用即可。

这种就不需要上述那种必须主键相同或者有唯一索引的字段。

第三种:根据主键判断

insert into table(id, name) on duplicate key update name = '李四';

根据主键id进行判重。

效果区别

第一种:不存在即插入,存在即修改

第二种:不存在即插入,存在则不做处理

第三种:不存在不做处理,存在即执行update

已有数据存在则不插入,否则则修改

经常遇到这样的情景,向一个表里插入一条数据,如果已经存在就更新一下,用程序实现麻烦而且在并发的时候可能会有问题,这时用mysql的DUPLICATE KEY 很方便

用法

INSERT INTO agent_user (group_id,group_type,user_name, user_mobile,created_time,updated_time)
SELECT 9503,8,a.user_name,a.user_mobile,1642397508000,1642397508000
from agent_user_heimingdan a on DUPLICATE KEY UPDATE user_mobile = a.user_mobile;

以上为个人经验,希望能给大家一个参考,也希望大家多多支持三水点靠木。

MySQL 相关文章推荐
将图片保存到mysql数据库并展示在前端页面的实现代码
May 02 MySQL
Mysql中 unique列插入重复值该怎么解决呢
May 26 MySQL
MySQL 数据类型选择原则
May 27 MySQL
MySQL8.0升级的踩坑历险记
Nov 01 MySQL
Linux7.6二进制安装Mysql8.0.27详细操作步骤
Nov 27 MySQL
MySQL派生表联表查询实战过程
Mar 20 MySQL
MySQL中rank() over、dense_rank() over、row_number() over用法介绍
Mar 23 MySQL
MySQL中IO问题的深入分析与优化
Apr 02 MySQL
MySQL 数据表操作
May 04 MySQL
sql注入报错之注入原理实例解析
Jun 10 MySQL
MySQL性能指标TPS+QPS+IOPS压测
Aug 05 MySQL
Mysql如何查看是否使用到索引
Dec 24 MySQL
MySQL创建表操作命令分享
mysql数据插入覆盖和时间戳的问题及解决
MySQL实战记录之如何快速定位慢SQL
Mar 23 #MySQL
MySQL中rank() over、dense_rank() over、row_number() over用法介绍
Mar 23 #MySQL
简单聊一聊SQL注入及防止SQL注入
Mar 23 #MySQL
浅谈MySQL中的六种日志
Mar 23 #MySQL
WINDOWS 64位 下安装配置mysql8.0.25最详细的教程
You might like
PHP spl_autoload_register实现自动加载研究
2011/12/06 PHP
PHP面向对象学习笔记之二 生成对象的设计模式
2012/10/06 PHP
PHP JSON格式的中文显示问题解决方法
2015/04/09 PHP
Yii2实现多域名跨域同步登录退出
2017/02/04 PHP
php实现微信扫码支付
2017/03/26 PHP
JS判断字符串长度的5个方法(区分中文和英文)
2014/03/18 Javascript
浅析Node在构建超媒体API中的作用
2014/07/30 Javascript
AngularJS中如何使用$http对MongoLab数据表进行增删改查
2016/01/23 Javascript
Bootstrap每天必学之模态框(Modal)插件
2016/04/26 Javascript
JS实现图片上传预览功能
2016/11/21 Javascript
js模糊查询实例分享
2016/12/26 Javascript
js/jq仿window文件夹框选操作插件
2017/03/08 Javascript
JavaScript基础心法 数据类型
2018/03/05 Javascript
Node.js API详解之 vm模块用法实例分析
2020/05/27 Javascript
vue 解决provide和inject响应的问题
2020/11/12 Javascript
解决await在forEach中不起作用的问题
2021/02/25 Javascript
Python复制Word内容并使用格式设字体与大小实例代码
2018/01/22 Python
django多对多表的创建,级联删除及手动创建第三张表
2019/07/25 Python
浅谈python图片处理Image和skimage的区别
2019/08/04 Python
Python加密模块的hashlib,hmac模块使用解析
2020/01/02 Python
python实现超级马里奥
2020/03/18 Python
python+adb+monkey实现Rom稳定性测试详解
2020/04/23 Python
Pandas对DataFrame单列/多列进行运算(map, apply, transform, agg)
2020/06/14 Python
基于Python3读写INI配置文件过程解析
2020/07/23 Python
详解修改Anaconda中的Jupyter Notebook默认工作路径的三种方式
2021/01/24 Python
HTML5 Canvas概述
2009/08/26 HTML / CSS
设计师珠宝:Ylang 23
2018/05/11 全球购物
教师年度考核自我鉴定
2014/01/19 职场文书
超越自我演讲稿
2014/05/21 职场文书
奉献家乡演讲稿
2014/09/13 职场文书
重阳节简报
2015/07/20 职场文书
团支部组织委员竞选稿
2015/11/21 职场文书
家访教师心得体会
2016/01/23 职场文书
吃通javascript正则表达式
2021/04/21 Javascript
WINDOWS下安装mysql 8.x 的方法图文教程
2022/04/19 MySQL
vue项目如何打包之项目打包优化(让打包的js文件变小)
2022/04/30 Vue.js