MySQL Replace INTO的使用
今天DST里面有个插件作者问我关于Replace INTO和INSERT INTO的区别,我和他说晚上上我的blog看吧,那时候还在忙,现在从MYSQL手册里找了点东西,MYSQL手册里说REPLACE INTO说的还是比较详细的.
REPLACE的运行与INSERT很相像。只有一点除外,如果表中的一个旧记录与一个用于PRIMARY KEY或一个UNIQUE索引的新记录具有相同的值,则在新记录被插入之前,旧记录被删除。请参见13.2.4节,“INSERT语法”。
注意,除非表有一个PRIMARY KEY或UNIQUE索引,否则,使用一个REPLACE语句没有意义。该语句会与INSERT相同,因为没有索引被用于确定是否新行复制了其它的行。
所有列的值均取自在REPLACE语句中被指定的值。所有缺失的列被设置为各自的默认值,这和INSERT一样。您不能从当前行中引用值,也不能在新行中使用值。如果您使用一个例如“SET col_name = col_name + 1”的赋值,则对位于右侧的列名称的引用会被作为DEFAULT(col_name)处理。因此,该赋值相当于SET col_name = DEFAULT(col_name) + 1。
为了能够使用REPLACE,您必须同时拥有表的INSERT和DELETE权限。
REPLACE语句会返回一个数,来指示受影响的行的数目。该数是被删除和被插入的行数的和。如果对于一个单行REPLACE该数为1,则一行被插入,同时没有行被删除。如果该数大于1,则在新行被插入前,有一个或多个旧行被删除。如果表包含多个唯一索引,并且新行复制了在不同的唯一索引中的不同旧行的值,则有可能是一个单一行替换了多个旧行。
受影响的行数可以容易地确定是否REPLACE只添加了一行,或者是否REPLACE也替换了其它行:检查该数是否为1(添加)或更大(替换)。
如果您正在使用C API,则可以使用mysql_affected_rows()函数获得受影响的行数。
目前,您不能在一个子查询中,向一个表中更换,同时从同一个表中选择。
以下是所用算法的更详细的说明(该算法也用于LOAD DATA…REPLACE):
1. 尝试把新行插入到表中
2. 当因为对于主键或唯一关键字出现重复关键字错误而造成插入失败时:
a. 从表中删除含有重复关键字值的冲突行
b. 再次尝试把新行插入到表中
今天喉咙疼死我了,闪人睡觉去.
使用格式:
REPLACE [LOW_PRIORITY | DELAYED]
[INTO] tbl_name [(col_name,…)]
VALUES ({expr | DEFAULT},…),(…),…
或:
REPLACE [LOW_PRIORITY | DELAYED]
[INTO] tbl_name
SET col_name={expr | DEFAULT}, …
或:
REPLACE [LOW_PRIORITY | DELAYED]
[INTO] tbl_name [(col_name,…)]
SELECT …

转载于:https://blog.51cto.com/nmyun/145087

MySQL Replace INTO的使用相关推荐

  1. MySQL:讨人喜欢的 MySQL replace into 用法(insert into 的增强版)

    讨人喜欢的 MySQL replace into 用法(insert into 的增强版) 在向表中插入数据的时候,经常遇到这样的情况:1. 首先判断数据是否存在: 2. 如果不存在,则插入:3.如果 ...

  2. mysql replace报错_Mysql中replace与replace into的用法讲解

    Mysql replace与replace into都是经常会用到的功能:replace其实是做了一次update操作,而不是先delete再insert:而replace into其实与insert ...

  3. MySQL replace into 的坑以及insert相关操作

    下面我们主要说一下在插入时候的几种情况: 1:insert ignore 2:replace into 3:ON DUPLICATE KEY UPDATE 关于insert ignore: 关于rep ...

  4. MySQL replace into 用法

    MySQL replace into 用法(insert into 的增强版) 在向表中插入数据的时候,经常遇到这样的情况:1. 首先判断数据是否存在: 2. 如果不存在,则插入:3.如果存在,则更新 ...

  5. MySQL Replace()函数

    转载自  MySQL Replace()函数 MySQL REPLACE字符串函数简介 MySQL为您提供了一个有用的字符串函数REPLACE(),它允许您用新的字符串替换表的列中的字符串. REPL ...

  6. MySQL replace into (insert into 的增强版)

    在使用SQL语句进行数据表插入insert操作时,如果表中定义了主键,插入具有相同主键的记录会报错:  Error Code: 1062. Duplicate entry 'XXXXX' for ke ...

  7. mysql replace

    http://blog.csdn.net/sahusoft/article/details/4446877 讨人喜欢的 MySQL replace into 用法(insert into 的增强版) ...

  8. mysql replace 效率,MySQL replace实用场景 MySQL实现replace函数的几种实用场景

    想了解MySQL实现replace函数的几种实用场景的相关内容吗,_陈哈哈在本文为您仔细讲解MySQL replace实用场景的相关知识和一些Code实例,欢迎阅读和指正,我们先划重点:MySQL,r ...

  9. oracle insert replace into,讨人喜欢的 MySQL replace into 用法(insert into 的增强版)

    讨人喜欢的 MySQL replace into 用法(insert into 的增强版) 在向表中插入数据的时候,经常遇到这样的情况:1. 首先判断数据是否存在: 2. 如果不存在,则插入:3.如果 ...

最新文章

  1. lasso回归_线性回归amp;lasso回归amp;岭回归介绍与对比
  2. 贷款杠杆为什么非去不可?危险比你想象的要恐怖
  3. 2.3物理层下面的传输媒体
  4. 日志对服务器压力,服务器一大堆错误日志的解决方法
  5. attention机制_聊聊NLP中的Attention机制---抛砖引玉
  6. python select网络编程详细介绍
  7. Linux服务器部署javaweb项目,从环境配置,到最终系统运行
  8. 【Java毕设项目】二十项毕设项目(附源码课件)
  9. java开发微信公众号支付全流程
  10. win10键盘失效问题
  11. 关于丹佛机场行李系统分析
  12. win7的ie10浏览器打不开,就是双击图标无反应
  13. mysql计算三角形斜边_MySQL 5.7新特性之Generated Column(函数索引)
  14. Excel从身份证号提取生日
  15. 【OpenCV-Python】 直方图均衡化
  16. J0ker的CISSP之路: Why CISSP
  17. 百度EasyDate线上协同数据标注平台使用
  18. 又遇见一个被坑的客户,新买的固态是旧的-_-||,应该是SM2246XT主控
  19. 如何让照片保持一百年不变色——富士instax SHARE SP-2体验探秘
  20. 1、图机器学习基础入门

热门文章

  1. PyTorch下的可视化工具(网络结构/训练过程可视化)
  2. 萌宝1天陪博士父母赶2场毕业典礼走红!上午是妈妈博士毕业,下午是爸爸......
  3. 33岁180程序员去相亲,被人嫌弃工资不够高,房子不是学区房,网友炸了!
  4. 不谈面试题,谈谈面试官喜欢见到的特质!
  5. pandas案例分析
  6. 汇编语言reg和sreg bp的介绍
  7. 注意 汇编源程序中,数据不能以字母开头,所以要在数据前面加上0
  8. python 正则表达式re常用操作符 使用方法 怎么用re正则表达式表示一个IP地址:0-255
  9. 学术前沿 | 基于深度学习的视觉三维重建研究总结
  10. VS code 插件配置手册