MYSQL中replace into的用法
今天在编程的时候,学习了replace into的用法,真的很好用,是insert into的增强版。在向表中插入数据时,我们经常会遇到这样的情况:1、首先判断数据是否存在;2、如果不存在,则插入;3、如果存在,则更新。
在SQL Server中可以这样处理:
if not exists (select 1 from t where id = 1)
insert into t(id, update_time) values(1, getdate())
else
update t set update_time = getdate() where id = 1
那么 MySQL 中如何实现这样的逻辑呢?MySQL 中有更简单的方法: replace into
replace into t(id, update_time) values(1, now());
或
replace into t(id, update_time) select 1, now();
replace into 跟 insert 功能类似,不同点在于:replace into 首先尝试插入数据到表中, 1. 如果发现表中已经有此行数据(根据主键或者唯一索引判断)则先删除此行数据,然后插入新的数据。 2. 否则,直接插入新数据。
要注意的是:插入数据的表必须有主键或者是唯一索引!否则的话,replace into 会直接插入数据,这将导致表中出现重复的数据。
MySQL replace into 有三种形式:
1. replace into tbl_name(col_name, ...) values(...)
2. replace into tbl_name(col_name, ...) select ...
3. replace into tbl_name set col_name=value, ...
第一种形式类似于insert into的用法,
第 二种replace select的用法也类似于insert select,这种用法并不一定要求列名匹配,事实上,MYSQL甚至不关心select返回的列名,它需要的是列的位置。例如,replace into tb1( name, title, mood) select rname, rtitle, rmood from tb2; 这个例子使用replace into从 tb2中将所有数据导入tb1中。
第三种replace set用法类似于update set用法,使用一个例如“SET col_name = col_name + 1”的赋值,则对位于右侧的列名称的引用会被作为DEFAULT(col_name)处理。因此,该赋值相当于SET col_name = DEFAULT(col_name) + 1。
前两种形式用的多些。其中 “into” 关键字可以省略,不过最好加上 “into”,这样意思更加直观。另外,对于那些没有给予值的列,MySQL 将自动为这些列赋上默认值。
转载于:https://www.cnblogs.com/qq530004000/p/4794118.html
MYSQL中replace into的用法相关推荐
- mysql中replace函数的用法
##-----MySQL数据替换即replace的运用-----## #这里主要介绍一些关于replace函数的用法.关于研究这个主要是发现replace功能很强大 #对于屏蔽关键字很有用处. #现在 ...
- MySQL中replace主键_Mysql中replace与replace into的用法讲解
Mysql replace与replace into都是经常会用到的功能:replace其实是做了一次update操作,而不是先delete再insert:而replace into其实与insert ...
- mysql中 REPLACE INTO 和 INSERT INTO 的区别
mysql中 REPLACE INTO 和 INSERT INTO 的区别 REPLACE INTO 和 INSERT INTO 功能类似,都是像表中插入数据,不同点在于:REPLACE INTO 首 ...
- MySQL中sum和count用法总结
MySQL中sum和count用法总结 1.sum 2.count 例子:要求:查询出2门及2门以上不及格者的平均成绩. 3.MySQL 分组之后如何统计记录条数 gourp by 之后的 count ...
- MySQL中ESCAPE关键字的用法详解
MySQL中ESCAPE关键字的用法详解 MySQL中ESCAPE关键字的用法详解 1. mysql转义概述 2. escape验证 MySQL中ESCAPE关键字的用法详解 1. mysql转义概述 ...
- mysql 中set函数的用法
mysql 中set函数的用法 :当值为空时不进行赋值 update user_user <set><if test="nickname!=null and nicknam ...
- Mysql中where和having用法及区别
1.Mysql中Having和Where用法 当SQL语句中使用聚合函数,然后又需要对聚合函数的记录集进行筛选过滤时,这个时候就需要用到Having子句.如果是在聚合函数前过滤记录用Where,在聚合 ...
- mysql into_MYSQL中replace into的用法
新建一个test表,三个字段,id,title,uid, id是自增的主键,uid是唯一索引: 插入两条数据 insert into test(title,uid) VALUES ('123465' ...
- mysql中replace into效率_MYSQL中replace into的用法
做项目是遇到这样一个问题,把查询出的数据插入到一个新表里面,第一次可以直接插入,但是第二次第三次的时候如果直接更新,但是会有些新的数据需要添加,但是如果先删除再插入的话效率不高,如果对比两端的数据,相 ...
最新文章
- 我开发的代码,如何申请版权_代码简介:我花了3个月时间申请开发人员职位。 这是我学到的。...
- java 默认字符集 iso_第二篇:JAVA字符编码系列二:Unicode,ISO-8859-1,GBK,UTF-8编码及......
- 法国公布“人机协同”项目第二批研究计划
- 谷歌浏览器Software Reporter Tool长时间占用CPU解决办法
- angularjs启动项目报ERROR in AppModule is not an NgModule解决方法
- ttshop是PHP开发的,商家应该如何选择商城系统?
- 根据图像连接数判别不同像素所处的位置
- 如何使用迅雷下载百度网盘资源
- 人工智能常见算法简介
- 什么是物联网数据采集网关?物联网数据采集网关的特点
- C语言实现简单打字游戏
- android 雪球红包脚本,利用adb shell和node.js实现抖音自动抢红包功能(推荐)
- astar不能用了_解锁不可切除肝癌治疗的新时代——“T+A”北美上市会纪要
- 动态规划——邮局、区间、坐标
- Windows多用户配置,不同用户不同访问权限
- 国家税务总局河南省电子税务局中,交契税时,报房屋属地税务机关必填的解决方法
- 投资不足半年,字节跳动退出李子柒签约公司“微念”
- 2020ICPR-化妆演示攻击
- netbeans8 EBJ模块中JPA部署问题
- Qt编写的项目作品5-物联网综合管理平台
热门文章
- html5图像调整大小,JavaScript调整HTML5画布中图像的大小
- 没有收到回复的同学注意了,用它一键查询!
- datagrid php json,thinkphp和easyui结合中,datagrid等容器获取json数据的方法
- 电话号码的字母组合Python解法
- java页面登陆密码_java实现页面登陆2 密码加密
- tensorflow lstm从隐状态到预测值_机器学习100天-Day2405 循环神经网络RNN(LSTM)
- java 字符串模糊匹配_Java实现伪查询(全匹配+模糊匹配)
- android mysql sqlite_Android SQLite (一) 数据库简介
- wpf开发仿真3d软件_web 3d 与仿真
- mysql 缓存监控_MySql 缓存查询原理与缓存监控 和 索引监控