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 06 MySQL
MySQL索引失效的典型案例
Jun 05 MySQL
SQL实现LeetCode(178.分数排行)
Aug 04 MySQL
Mysql实现简易版搜索引擎的示例代码
Aug 30 MySQL
MySQL数据库必备之条件查询语句
Oct 15 MySQL
mysql5.6主从搭建以及不同步问题详解
Dec 04 MySQL
实战 快速定位MySQL的慢SQL
Mar 22 MySQL
mysql中DCL常用的用户和权限控制
Mar 31 MySQL
MySQL磁盘碎片整理实例演示
Apr 03 MySQL
mysql字段为NULL索引是否会失效实例详解
May 30 MySQL
mysql查看表结构的三种方法总结
Jul 07 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
php db类库进行数据库操作
2009/03/19 PHP
谈谈关于php的优点与缺点
2013/04/11 PHP
PHP记录和读取JSON格式日志文件
2016/07/07 PHP
php_pdo 预处理语句详解
2016/11/21 PHP
php操作redis常见方法示例【key与value操作】
2020/04/14 PHP
php模拟post提交请求调用接口示例解析
2020/08/07 PHP
些很实用且必用的小脚本代码
2006/06/26 Javascript
Jquery遍历节点的方法小集
2014/01/22 Javascript
将字符串中由空格隔开的每个单词首字母大写
2014/04/06 Javascript
JavaScript实现的购物车效果可以运用在好多地方
2014/05/09 Javascript
jQuery验证元素是否为空的两种常用方法
2015/03/17 Javascript
JavaScript中的toUTCString()方法使用详解
2015/06/12 Javascript
Javascript实现快速排序(Quicksort)的算法详解
2015/09/06 Javascript
JS实现的3D拖拽翻页效果代码
2015/10/31 Javascript
js图片切换具体实现代码
2016/10/13 Javascript
JavaScript实现QQ聊天消息展示和评论提交功能
2017/05/22 Javascript
DataTables添加额外的查询参数和删除columns等无用参数实例
2017/07/04 Javascript
JS实现倒计时图文效果
2018/11/17 Javascript
Vue数据绑定简析小结
2019/05/07 Javascript
typescript nodejs 依赖注入实现方法代码详解
2019/07/21 NodeJs
Python实现一个简单的MySQL类
2015/01/07 Python
python实现远程通过网络邮件控制计算机重启或关机
2018/02/22 Python
《与孩子一起学编程》python自测题
2018/05/27 Python
tensorflow通过模型文件,使用tensorboard查看其模型图Graph方式
2020/01/23 Python
python GUI库图形界面开发之PyQt5下拉列表框控件QComboBox详细使用方法与实例
2020/02/27 Python
Casetify官网:自制专属手机壳、iPad护壳和Apple Watch手表带
2018/05/09 全球购物
高中毕业自我鉴定范文
2013/10/02 职场文书
十八大感想感言
2014/02/10 职场文书
大班上学期幼儿评语
2014/04/30 职场文书
厕所文明标语
2014/06/11 职场文书
就业意向书
2014/07/29 职场文书
镇副书记专题民主生活会对照检查材料思想汇报
2014/10/02 职场文书
银行优秀员工推荐信
2015/03/24 职场文书
员工给公司的建议书
2019/06/24 职场文书
golang interface判断为空nil的实现代码
2021/04/24 Golang
GO语言字符串处理函数之处理Strings包
2022/04/14 Golang