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 相关文章推荐
如何用Navicat操作MySQL
May 12 MySQL
Mysql效率优化定位较低sql的两种方式
May 26 MySQL
带你学习MySQL执行计划
May 31 MySQL
详细聊聊关于Mysql联合查询的那些事儿
Oct 24 MySQL
MySQL表类型 存储引擎 的选择
Nov 11 MySQL
mysql 生成连续日期及变量赋值
Mar 20 MySQL
浅谈MySQL中的六种日志
Mar 23 MySQL
CentOS 7安装mysql5.7使用XtraBackUp备份工具命令详解
Apr 12 MySQL
解决MySQL报“too many connections“错误
Apr 19 MySQL
mysql字段为NULL索引是否会失效实例详解
May 30 MySQL
MySQL 原理与优化之Limit 查询优化
Aug 14 MySQL
postgresql如何找到表中重复数据的行并删除
May 08 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防止CC攻击代码 php防止网页频繁刷新
2015/12/21 PHP
Thinkphp 中 distinct 的用法解析
2016/12/14 PHP
JavaScript中的Document文档对象
2008/01/16 Javascript
解决AJAX中跨域访问出现'没有权限'的错误
2008/08/20 Javascript
javascript得到XML某节点的子节点个数的脚本
2008/10/11 Javascript
extjs实现选择多表自定义查询功能 前台部分(ext源码)
2011/12/20 Javascript
firefox下jQuery UI Autocomplete 1.8.*中文输入修正方法
2012/09/19 Javascript
jquery的attr方法禁用表单元素禁用输入内容
2014/06/23 Javascript
Jquery幻灯片特效代码分享--打开页面随机选择切换方式(3)
2015/08/15 Javascript
基于JQuery实现的跑马灯效果(文字无缝向上翻动)
2016/12/02 Javascript
ES6中class类用法实例浅析
2017/04/06 Javascript
微信小程序实现按字母排列选择城市功能
2019/11/25 Javascript
Vue生命周期activated之返回上一页不重新请求数据操作
2020/07/26 Javascript
vant 解决tab切换插件标题样式自定义的问题
2020/11/13 Javascript
python实现在pickling的时候压缩的方法
2014/09/25 Python
python使用PyGame播放Midi和Mp3文件的方法
2015/04/24 Python
简单介绍Python的Django框架的dj-scaffold项目
2015/05/30 Python
Python 高级专用类方法的实例详解
2017/09/11 Python
Python3简单爬虫抓取网页图片代码实例
2019/08/26 Python
Python3实现配置文件差异对比脚本
2019/11/18 Python
基于Django实现日志记录报错信息
2019/12/17 Python
python实现发送带附件的邮件代码分享
2020/09/22 Python
Python实现自动装机功能案例分析
2020/10/22 Python
瑞典Happy Socks美国官网:购买色彩斑斓的快乐袜子
2016/10/19 全球购物
莫斯科绝对前卫最秘密的商店:SVMoscow
2017/10/23 全球购物
住房公积金接收函
2014/01/09 职场文书
汽车机修工岗位职责
2014/03/06 职场文书
倡议书范文
2014/04/16 职场文书
小学节能减排倡议书
2014/05/15 职场文书
道路施工安全责任书
2014/07/24 职场文书
出国留学导师推荐信
2015/03/26 职场文书
全国法制宣传日活动总结
2015/05/05 职场文书
单方投资意向书
2015/05/11 职场文书
2016民族团结先进个人事迹材料
2016/02/26 职场文书
JS实现扫雷项目总结
2021/05/19 Javascript
Python图片处理之图片裁剪教程
2021/05/27 Python