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查询学习之基础查询操作
May 08 MySQL
MySQL COUNT函数的使用与优化
May 10 MySQL
MySql学习笔记之事务隔离级别详解
May 12 MySQL
MySQL查看表和清空表的常用命令总结
May 26 MySQL
SQL实现LeetCode(196.删除重复邮箱)
Aug 07 MySQL
MySQL 1130异常,无法远程登录解决方案详解
Aug 23 MySQL
Mysql排序的特性详情
Nov 01 MySQL
一文了解MySQL二级索引的查询过程
Feb 24 MySQL
mysql 获取时间方式
Mar 20 MySQL
pt-archiver 主键自增
Apr 26 MySQL
Mysql的Table doesn't exist问题及解决
Dec 24 MySQL
MySQL数据管理操作示例讲解
Dec 24 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 替换模板变量实现步骤
2009/08/24 PHP
实例简介PHP的一些高级面向对象编程的特性
2015/11/27 PHP
PHP设计模式之状态模式定义与用法详解
2018/04/02 PHP
JavaScript 基于原型的对象(创建、调用)
2009/10/16 Javascript
cument.execCommand()用法深入理解
2012/12/04 Javascript
jQuery点击弹出下拉菜单的小例子
2013/08/01 Javascript
js网页实时倒计时精确到秒级
2014/02/10 Javascript
javascript匿名函数应用示例介绍
2014/03/07 Javascript
在jquery boxy中添加百度地图坐标拾取注意流程
2014/04/03 Javascript
javacript获取当前屏幕大小
2016/06/04 Javascript
谈谈PHP中相对路径的问题与绝对路径的使用
2016/08/16 Javascript
学习Node.js模块机制
2016/10/17 Javascript
js手机号批量滚动抽奖实现代码
2020/04/17 Javascript
详解angularjs结合pagination插件实现分页功能
2017/02/10 Javascript
基于Vue.js实现tab滑块效果
2017/07/23 Javascript
nodejs高大上的部署方式(PM2)
2018/09/11 NodeJs
jQuery Datatables 动态列+跨列合并实现代码
2020/01/30 jQuery
vue中是怎样监听数组变化的
2020/10/24 Javascript
[36:52]DOTA2真视界:基辅特锦赛总决赛
2017/05/21 DOTA
[01:36:19]Secret vs NB 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
使用python检测手机QQ在线状态的脚本代码
2013/02/10 Python
修改Python的pyxmpp2中的主循环使其提高性能
2015/04/24 Python
Python中sort和sorted函数代码解析
2018/01/25 Python
python pandas 如何替换某列的一个值
2018/06/09 Python
python中property属性的介绍及其应用详解
2019/08/29 Python
python @propert装饰器使用方法原理解析
2019/12/25 Python
Django之富文本(获取内容,设置内容方式)
2020/05/21 Python
英国工作场所设备购买网站:Slingsby
2019/05/03 全球购物
兴趣小组活动总结
2014/05/05 职场文书
关于晚自习早退的检讨书
2014/09/13 职场文书
教师批评与自我批评范文
2014/10/15 职场文书
商铺门面租房协议书
2014/10/21 职场文书
2015年个人实习工作总结
2014/12/12 职场文书
小学教育见习总结
2015/06/23 职场文书
聘任书格式及范文
2015/09/21 职场文书
python基础之匿名函数详解
2021/04/21 Python