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 相关文章推荐
数据库的高级查询六:表连接查询:外连接(左外连接,右外连接,UNION关键字,连接中ON与WHERE的不同)
Apr 05 MySQL
MySQL 表空间碎片的概念及相关问题解决
May 07 MySQL
MySQL update set 和 and的区别
May 08 MySQL
详解MySQL中的主键与事务
May 27 MySQL
MySQL 百万级数据的4种查询优化方式
Jun 07 MySQL
SQL实现LeetCode(180.连续的数字)
Aug 04 MySQL
MySQL定时备份数据库(全库备份)的实现
Sep 25 MySQL
MySQL视图概念以及相关应用
Apr 19 MySQL
MySQL的prepare使用以及遇到的bug
May 11 MySQL
MySQL查询日期时间
May 15 MySQL
Mysql索引失效 数据库表中有索引还是查询很慢
May 15 MySQL
MySQL导致索引失效的几种情况
Jun 25 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
德生S2000南麂列岛台湾FM收听记录
2021/03/02 无线电
PHP变量的定义、可变变量、变量引用、销毁方法
2013/12/20 PHP
php使用CURL不依赖COOKIEJAR获取COOKIE的方法
2015/06/17 PHP
PHP实现QQ空间自动回复说说的方法
2015/12/02 PHP
详解WordPress中用于更新和获取用户选项数据的PHP函数
2016/03/08 PHP
php用正则判断是否为数字的方法
2016/03/25 PHP
Javascript 获取字符串字节数的多种方法
2009/06/02 Javascript
动态的创建一个元素createElement及删除一个元素
2014/01/24 Javascript
js判断当前页面在移动设备还是在PC端中打开
2016/01/06 Javascript
Node.js 日志处理模块log4js
2016/08/28 Javascript
jQuery中页面返回顶部的方法总结
2016/12/30 Javascript
Vue.js组件tab实现选项卡切换
2020/03/23 Javascript
利用nginx + node在阿里云部署https的步骤详解
2017/12/19 Javascript
Angular利用内容投射向组件输入ngForOf模板的方法
2018/03/05 Javascript
微信自定义分享链接信息(标题,图片和内容)实现过程详解
2019/09/04 Javascript
Vue打包后访问静态资源路径问题
2019/11/08 Javascript
js实现纯前端压缩图片
2020/11/16 Javascript
[02:28]DOTA2亚洲邀请赛附加赛 RECAP赛事回顾
2015/01/29 DOTA
[54:58]完美世界DOTA2联赛PWL S2 LBZS vs Rebirth 第一场 11.25
2020/11/25 DOTA
python获取远程图片大小和尺寸的方法
2015/03/26 Python
Python实现公历(阳历)转农历(阴历)的方法示例
2017/08/22 Python
Python中的is和==比较两个对象的两种方法
2017/09/06 Python
python安装twisted的问题解析
2018/08/21 Python
Django unittest 设置跳过某些case的方法
2018/12/26 Python
解决PyCharm控制台输出乱码的问题
2019/01/16 Python
python 阶乘累加和的实例
2019/02/01 Python
html5中嵌入视频自动播放的问题解决
2020/05/25 HTML / CSS
TUMI香港官网:国际领先的行李箱、背囊品牌
2021/03/01 全球购物
大学四年学习的自我评价分享
2013/12/09 职场文书
《小山羊和小灰兔》教学反思
2014/02/19 职场文书
检举信的格式及范文
2014/04/04 职场文书
社区党的群众路线教育实践活动总结材料
2014/10/31 职场文书
党员干部学习三严三实心得体会
2016/01/05 职场文书
竞聘演讲报告:基本写作有哪些?附开头范文
2019/10/16 职场文书
python中Matplotlib绘制直线的实例代码
2021/07/04 Python
漫画「请问您今天要来点兔子吗?」最新杂志彩页公开
2022/03/24 日漫