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 相关文章推荐
浅析InnoDB索引结构
Apr 05 MySQL
MySQL sql_mode修改不生效的原因及解决
May 07 MySQL
Mysql 用户权限管理实现
May 25 MySQL
mysql 如何获取两个集合的交集/差集/并集
Jun 08 MySQL
一篇文章带你深入了解Mysql触发器
Aug 02 MySQL
Mysql中where与on的区别及何时使用详析
Aug 04 MySQL
MySQL数据库必备之条件查询语句
Oct 15 MySQL
weblogic服务建立数据源连接测试更新mysql驱动包的问题及解决方法
Jan 22 MySQL
MySQL读取JSON转换的方式
Mar 18 MySQL
mysql实现将字符串字段转为数字排序或比大小
Jun 14 MySQL
Mysql数据库group by原理详解
Jul 07 MySQL
mysql函数之截取字符串的实现
Aug 14 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集成FCK的函数代码
2008/09/27 PHP
PHP中图片等比缩放的实例
2013/03/24 PHP
PHP中Fatal error session_start()错误解决步骤
2014/08/05 PHP
JS简单实现登陆验证附效果图
2013/11/19 Javascript
JS常用表单验证方法总结
2014/05/22 Javascript
学习AngularJs:Directive指令用法(完整版)
2016/04/26 Javascript
浅谈js对象属性 通过点(.) 和方括号([]) 的不同之处
2016/10/29 Javascript
Javascript同时声明一连串(多个)变量的方法
2017/01/23 Javascript
video.js使用改变ui过程
2017/03/05 Javascript
jQuery菜单实例(全选,反选,取消)
2017/08/28 jQuery
JS常见面试试题总结【去重、遍历、闭包、继承等】
2019/08/27 Javascript
js+css实现扇形导航效果
2020/08/18 Javascript
vue axios请求成功却进入catch的原因分析
2020/09/08 Javascript
[57:12]完美世界DOTA2联赛循环赛 Inki vs Matador BO2第一场 10.31
2020/11/02 DOTA
python自动格式化json文件的方法
2015/03/11 Python
python代码 if not x: 和 if x is not None: 和 if not x is None:使用介绍
2016/09/21 Python
Python实现二维数组输出为图片
2018/04/03 Python
对Tensorflow中的变量初始化函数详解
2018/07/27 Python
python 实现敏感词过滤的方法
2019/01/21 Python
pip install 使用国内镜像的方法示例
2020/04/03 Python
Python图像读写方法对比
2020/11/16 Python
python os.rename实例用法详解
2020/12/06 Python
Django前后端分离csrf token获取方式
2020/12/25 Python
乐高官方旗舰店:LEGO积木玩具
2019/04/06 全球购物
护理中职生求职信范文
2014/02/24 职场文书
十佳文明家庭事迹
2014/05/25 职场文书
优秀学生干部先进事迹材料
2014/05/26 职场文书
新手上路标语
2014/06/20 职场文书
有关九一八事变的演讲稿
2014/09/14 职场文书
财务部岗位职责
2015/02/03 职场文书
车队安全员岗位职责
2015/02/15 职场文书
2015年推广普通话演讲稿
2015/03/20 职场文书
2015年乡镇安全生产工作总结
2015/05/19 职场文书
800字作文之大雪
2019/12/04 职场文书
gtx1650怎么样 gtx1650显卡相当于什么级别
2022/04/08 数码科技
PostgreSQL常用字符串分割函数整理汇总
2022/07/07 PostgreSQL