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 8.0 之不可见列的基本操作
May 20 MySQL
简单了解 MySQL 中相关的锁
May 25 MySQL
MySql开发之自动同步表结构
May 28 MySQL
SQL注入的实现以及防范示例详解
Jun 02 MySQL
SQL实现LeetCode(197.上升温度)
Aug 07 MySQL
MySQL into_Mysql中replace与replace into用法案例详解
Sep 14 MySQL
MySQL中B树索引和B+树索引的区别详解
Mar 03 MySQL
mysql的单列多值存储实例详解
Apr 05 MySQL
MySql重置root密码 --skip-grant-tables
Apr 11 MySQL
mysql5.5中文乱码问题解决的有用方法
May 30 MySQL
MySQL导致索引失效的几种情况
Jun 25 MySQL
面试官问我Mysql的存储引擎了解多少
Aug 05 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
给多个地址发邮件的类
2006/10/09 PHP
PHP中使用register_shutdown_function函数截获fatal error示例
2015/04/21 PHP
php生成二维码不保存服务器还有下载功能的实现代码
2018/08/09 PHP
jquery 实现checkbox全选,反选,全不选等功能代码(奇数)
2012/10/24 Javascript
jquery fancybox ie6不显示关闭按钮的解决办法
2013/12/25 Javascript
Jquery原生态实现表格header头随滚动条滚动而滚动
2014/03/18 Javascript
SuperSlide2实现图片滚动特效
2014/06/20 Javascript
node.js中的querystring.unescape方法使用说明
2014/12/10 Javascript
理解javascript回调函数
2014/12/28 Javascript
浅析四种常见的Javascript声明循环变量的书写方式
2015/10/14 Javascript
常用javascript表单验证汇总
2020/07/20 Javascript
Bootstrap Modal遮罩弹出层(完整版)
2016/11/21 Javascript
canvas实现图像布局填充功能
2017/02/06 Javascript
jQuery实现导航栏头部菜单项点击后变换颜色的方法
2017/07/19 jQuery
jQuery 动画与停止动画效果实例详解
2020/05/19 jQuery
简介JavaScript错误处理机制
2020/08/04 Javascript
vue 将多个过滤器封装到一个文件中的代码详解
2020/09/05 Javascript
React Ant Design树形表格的复杂增删改操作
2020/11/02 Javascript
[03:02]2014DOTA2西雅图邀请赛 让队员自己告诉你DK NAVI备战情况
2014/07/08 DOTA
python通过openpyxl生成Excel文件的方法
2015/05/12 Python
分享Pycharm中一些不为人知的技巧
2018/04/03 Python
Python解决线性代数问题之矩阵的初等变换方法
2018/12/12 Python
PyQt5实现暗黑风格的计时器
2019/07/29 Python
django 实现celery动态设置周期任务执行时间
2019/11/19 Python
python多项式拟合之np.polyfit 和 np.polyld详解
2020/02/18 Python
python爬取天气数据的实例详解
2020/11/20 Python
python爬虫工具例举说明
2020/11/30 Python
香港最新科技与优质家居产品购物网站:J SELECT
2018/08/21 全球购物
英国门销售网站:Green Tree Doors
2020/01/07 全球购物
勾股定理课后反思
2014/04/26 职场文书
2014光棍节大学生联谊活动方案
2014/10/10 职场文书
国际贸易实训报告
2014/11/05 职场文书
酒店辞职书范文
2015/02/26 职场文书
你会写请假条吗?
2019/06/26 职场文书
导游词之无锡古运河
2019/11/14 职场文书
SQL Server2019数据库备份与还原脚本,数据库可批量备份
2021/11/20 SQL Server