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表的增删改查(基础)
Apr 05 MySQL
jdbc使用PreparedStatement批量插入数据的方法
Apr 27 MySQL
超详细教你怎么升级Mysql的版本
May 19 MySQL
MySQL 覆盖索引的优点
May 19 MySQL
正确使用MySQL update语句
May 26 MySQL
一文读懂navicat for mysql基础知识
May 31 MySQL
MySQL 常见存储引擎的优劣
Jun 02 MySQL
深入讲解数据库中Decimal类型的使用以及实现方法
Feb 15 MySQL
MySQL分区表管理命令汇总
Mar 21 MySQL
MySQL数据库中的锁、解锁以及删除事务
May 06 MySQL
MYSQL中文乱码问题的解决方案
Jun 14 MySQL
MySQL transaction事务安全示例讲解
Jun 21 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
十大感人催泪爱情动漫 第一名至今不忍在看第二遍
2020/03/04 日漫
基于qmail的完整WEBMAIL解决方案安装详解
2006/10/09 PHP
PHP+iframe图片上传实现即时刷新效果
2016/11/18 PHP
jQuery Flash/MP3/Video多媒体插件
2010/01/18 Javascript
需要做特殊处理的DOM元素属性的访问
2010/11/05 Javascript
学习并汇集javascript匿名函数
2010/11/25 Javascript
jquery ajax提交整个表单元素的快捷办法
2013/03/27 Javascript
浅析Js中的单引号与双引号问题
2013/11/06 Javascript
推荐5 个常用的JavaScript调试技巧
2015/01/08 Javascript
如何使用PHP+jQuery+MySQL实现异步加载ECharts地图数据(附源码下载)
2016/02/23 Javascript
json的使用小结
2016/06/08 Javascript
JS重载实现方法分析
2016/12/16 Javascript
将input框中输入内容显示在相应的div中【三种方法可选】
2017/05/08 Javascript
React Native时间转换格式工具类分享
2017/10/24 Javascript
ES6中Set和Map数据结构,Map与其它数据结构互相转换操作实例详解
2019/02/28 Javascript
Vue实现Layui的集成方法步骤
2020/04/10 Javascript
基于原生js实现判断元素是否有指定class名
2020/07/11 Javascript
toString.call()通用的判断数据类型方法示例
2020/08/28 Javascript
[03:15]2014DOTA2国际邀请赛 专访国士无双信心满满
2014/07/12 DOTA
python开发利器之ulipad的使用实践
2017/03/16 Python
python删除服务器文件代码示例
2018/02/09 Python
解决pyinstaller打包exe文件出现命令窗口一闪而过的问题
2018/10/31 Python
Python切片操作去除字符串首尾的空格
2019/04/22 Python
python爬虫 爬取58同城上所有城市的租房信息详解
2019/07/30 Python
python网络爬虫 CrawlSpider使用详解
2019/09/27 Python
解决torch.autograd.backward中的参数问题
2020/01/07 Python
Python .py生成.pyd文件并打包.exe 的注意事项说明
2021/03/04 Python
科茨沃尔德家居商店:Scotts of Stow
2018/06/29 全球购物
宣传保护环境的公益广告词
2014/03/13 职场文书
幼儿园小班家长寄语
2014/04/02 职场文书
社区戒毒工作方案
2014/06/04 职场文书
导航工程专业自荐信
2014/09/02 职场文书
先进典型发言材料
2014/12/30 职场文书
Nginx Rewrite使用场景及配置方法解析
2021/04/01 Servers
MySQL系列之七 MySQL存储引擎
2021/07/02 MySQL
Python FuzzyWuzzy实现模糊匹配
2022/04/28 Python