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的MVCC多版本并发控制的实现
Apr 14 MySQL
MySQL分库分表与分区的入门指南
Apr 22 MySQL
一篇文章弄懂MySQL查询语句的执行过程
May 07 MySQL
修改MySQL的数据库引擎为INNODB的方法
May 26 MySQL
MYSQL主从数据库同步备份配置的方法
May 26 MySQL
解决mysql模糊查询索引失效问题的几种方法
Jun 18 MySQL
mysql连接查询中and与where的区别浅析
Jul 01 MySQL
为什么MySQL 删除表数据 磁盘空间还一直被占用
Oct 16 MySQL
MySQL8.0升级的踩坑历险记
Nov 01 MySQL
Mysql数据库手动及定时备份步骤
Nov 07 MySQL
MySQL数据库如何使用Shell进行连接
Apr 12 MySQL
mysql使用FIND_IN_SET和group_concat两个方法查询上下级机构
Apr 20 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的call_user_func传reference引发的思考
2010/07/23 PHP
在WordPress中使用PHP脚本来判断访客来自什么国家
2015/12/10 PHP
PHP实现批量上传单个文件
2015/12/29 PHP
jQuery 扩展对input的一些操作方法
2009/10/30 Javascript
NODE.JS加密模块CRYPTO常用方法介绍
2014/06/05 Javascript
js实现文章文字大小字号功能完整实例
2014/11/01 Javascript
JavaScript原生对象之String对象的属性和方法详解
2015/03/13 Javascript
jQuery遍历页面所有CheckBox查看是否被选中的方法
2015/04/14 Javascript
javascript原型继承工作原理和实例详解
2016/04/07 Javascript
JQuery.validate在ie8下不支持的快速解决方法
2016/05/18 Javascript
KnockoutJS 3.X API 第四章之表单value绑定
2016/10/10 Javascript
原生JS实现图片左右轮播
2016/12/30 Javascript
基于javaScript的this指向总结
2017/07/22 Javascript
利用vue + element实现表格分页和前端搜索的方法
2017/12/25 Javascript
JavaScript循环遍历你会用哪些之小结篇
2018/09/28 Javascript
angularJs中json数据转换与本地存储的实例
2018/10/08 Javascript
JavaScript的Proxy可以做哪些有意思的事儿
2019/06/15 Javascript
小程序如何在不同设备上自适应生成海报的实现方法
2019/08/20 Javascript
vue实现的封装全局filter并统一管理操作示例
2020/02/02 Javascript
taro 实现购物车逻辑的实例代码
2020/06/05 Javascript
对vuex中store和$store的区别说明
2020/07/24 Javascript
vue 通过 Prop 向子组件传递数据的实现方法
2020/10/30 Javascript
[02:54]DOTA2亚洲邀请赛 VG战队出场宣传片
2015/02/07 DOTA
selenium+python设置爬虫代理IP的方法
2018/11/29 Python
使用python制作一个为hex文件增加版本号的脚本实例
2019/06/12 Python
Python 实现顺序高斯消元法示例
2019/12/09 Python
Python异常原理及异常捕捉实现过程解析
2020/03/25 Python
CSS3五个技巧给你的网站带来出色的效果
2009/04/02 HTML / CSS
美国顶级品牌男士大码服装店:DXL
2017/08/30 全球购物
美国滑雪和滑雪板商店:Buckman
2018/03/03 全球购物
先进工作者获奖感言
2014/02/08 职场文书
触电现场处置方案
2014/05/14 职场文书
高等教育学专业自荐书
2014/06/17 职场文书
小学优秀教师事迹材料
2014/12/16 职场文书
工作检讨书范文
2015/01/23 职场文书
员工升职自我评价
2019/03/26 职场文书