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的join buffer原理
Apr 29 MySQL
MySQL 自定义变量的概念及特点
May 13 MySQL
MySQL为id选择合适的数据类型
Jun 07 MySQL
解决mysql:ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO/YES)
Jun 26 MySQL
sql注入教程之类型以及提交注入
Aug 02 MySQL
Mysql排序的特性详情
Nov 01 MySQL
一文搞懂MySQL索引页结构
Feb 28 MySQL
MySQL的InnoDB存储引擎的数据页结构详解
Mar 03 MySQL
你真的会用Mysql的explain吗
Mar 31 MySQL
MySQL数据库事务的四大特性
Apr 20 MySQL
mysql5.5中文乱码问题解决的有用方法
May 30 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中require和require_once的区别说明
2014/02/27 PHP
php分页查询的简单实现代码
2017/03/14 PHP
php修改数组键名的方法示例
2017/04/15 PHP
脚本安需导入(装载)的三种模式的对比
2007/06/24 Javascript
YUI 读码日记之 YAHOO.lang.is*
2008/03/22 Javascript
ExtJS扩展 垂直tabLayout实现代码
2009/06/21 Javascript
jquery提交form表单简单示例分享
2014/03/03 Javascript
使用JS获取当前地理位置方法汇总
2014/12/18 Javascript
JavaScript基础函数整理汇总
2015/01/30 Javascript
jQuery-1.9.1源码分析系列(十)事件系统之事件体系结构
2015/11/19 Javascript
多个js毫秒倒计时同时进行效果
2016/01/05 Javascript
JavaScript+html5 canvas实现本地截图教程
2020/04/16 Javascript
vue2.0实现分页组件的实例代码
2017/06/22 Javascript
JS将网址url转化为JSON格式的方法
2018/07/02 Javascript
在js代码拼接dom对象到页面上的模板总结
2018/10/21 Javascript
JS实现倒计时图文效果
2018/11/17 Javascript
[56:47]Ti4 循环赛第三日 iG vs Liquid
2014/07/12 DOTA
Python中的魔法方法深入理解
2014/07/09 Python
Python的ORM框架中SQLAlchemy库的查询操作的教程
2015/04/25 Python
Python保存MongoDB上的文件到本地的方法
2016/03/16 Python
Python简单实现安全开关文件的两种方式
2016/09/19 Python
Python面向对象基础入门之编码细节与注意事项
2018/12/11 Python
Python实现判断一个整数是否为回文数算法示例
2019/03/02 Python
python快排算法详解
2019/03/04 Python
python标准库OS模块函数列表与实例全解
2020/03/10 Python
pytorch查看通道数 维数 尺寸大小方式
2020/05/26 Python
小狗电器官方商城:中国高端吸尘器品牌
2017/03/29 全球购物
十佳美德少年事迹材料
2014/02/05 职场文书
《小石潭记》教学反思
2014/02/13 职场文书
生日主持词
2014/03/20 职场文书
优秀少先队工作者事迹材料
2014/05/13 职场文书
工作求职自荐信
2014/06/13 职场文书
大一学生个人总结
2015/02/15 职场文书
委托收款证明
2015/06/23 职场文书
2015年度女工工作总结
2015/10/22 职场文书