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.24版本安装配置方法图文教程
May 12 MySQL
正确使用MySQL INSERT INTO语句
May 26 MySQL
Mysql中 unique列插入重复值该怎么解决呢
May 26 MySQL
如何使用分区处理MySQL的亿级数据优化
Jun 18 MySQL
MySQL定时备份数据库(全库备份)的实现
Sep 25 MySQL
mysql的数据压缩性能对比详情
Nov 07 MySQL
Mysql存储过程、触发器、事件调度器使用入门指南
Jan 22 MySQL
解决MySQL添加新用户-ERROR 1045 (28000)的问题
Mar 03 MySQL
Mysql分析设计表主键为何不用uuid
Mar 31 MySQL
pt-archiver 主键自增
Apr 26 MySQL
解决Mysql报错 Table 'mysql.user' doesn't exist
May 06 MySQL
mysql 体系结构和存储引擎介绍
May 06 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
第五节 克隆 [5]
2006/10/09 PHP
smarty内置函数section的用法
2015/01/22 PHP
拖动一个HTML元素
2006/12/22 Javascript
理解JavaScript变量作用域更轻松
2009/10/25 Javascript
基于Jquery的标签智能验证实现代码
2010/12/27 Javascript
jquery的extend和fn.extend的使用说明
2011/01/09 Javascript
jQuery-ui引入后Vs2008的无智能提示问题解决方法
2014/02/10 Javascript
两款JS脚本判断手机浏览器类型跳转WAP手机网站
2015/10/16 Javascript
JavaScript必知必会(五) eval 的使用
2016/06/08 Javascript
详解js的延迟对象、跨域、模板引擎、弹出层、AJAX【附实例下载】
2016/12/19 Javascript
vue.js使用v-model指令实现的数据双向绑定功能示例
2018/05/22 Javascript
vue模块拖拽实现示例代码
2019/03/09 Javascript
微信小程序完美解决scroll-view高度自适应问题的方法
2020/08/08 Javascript
零基础写python爬虫之HTTP异常处理
2014/11/05 Python
Python中操作文件之write()方法的使用教程
2015/05/25 Python
Python基础之getpass模块详细介绍
2017/08/10 Python
对pycharm 修改程序运行所需内存详解
2018/12/03 Python
Python 一键制作微信好友图片墙的方法
2019/05/16 Python
Python命名空间namespace及作用域原理解析
2020/06/05 Python
详解pycharm配置python解释器的问题
2020/10/15 Python
匡威帆布鞋美国官网:Converse美国
2016/08/22 全球购物
马来西亚网上购物平台:ezbuy
2018/02/13 全球购物
意大利在线药房:shop-farmacia.it
2019/03/12 全球购物
世界上最受欢迎的花店:1-800-Flowers.com
2020/06/01 全球购物
建筑工程专业毕业生自荐信
2013/10/19 职场文书
模具专业推荐信
2013/10/30 职场文书
前台领班岗位职责
2013/12/04 职场文书
外贸业务员求职信范文
2013/12/12 职场文书
工作会议主持词
2014/03/17 职场文书
工作求职自荐信
2014/06/13 职场文书
担保书范本
2015/01/20 职场文书
英文道歉信
2015/01/20 职场文书
服务员岗位职责
2015/02/03 职场文书
三八妇女节主持词
2015/07/04 职场文书
导游词之韩国济州岛
2019/10/28 职场文书
PostgreSQL逻辑复制解密原理解析
2022/09/23 PostgreSQL