• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >Mysql > MYSQL的REPLACE和ON DUPLICATE KEY UPDATE语句介绍解决问题实例

MYSQL的REPLACE和ON DUPLICATE KEY UPDATE语句介绍解决问题实例

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-11

通过本文主要向大家介绍了duplicate key update,on duplicate update,mysql update replace,update replace,mysql duplicate等相关知识,希望本文的分享对您有所帮助


在对看看的后台进行排序的时候,遇到了一个像这样的需求,在电影表中有ID(主键自增)和orderby(排序字段) ,假设有十条数据id分别从1-10之间,对应的orderby也是从1-10之间,我现在想把id=9的数据移动到第三的位置(id=3)的这个位置,并且保证之前的数据排列顺序(即id=3的orderby=4,id=4的orderby=5…id=8的orderby=9),这样如果用循环的形式是可以解决数据的问题,但是这样操作数据库过程太多,现在就想用一条sql语句来解决这个问题.

下面来看看Mysql的REPLACE和INSERT ... ON DUPLICATE KEY UPDATE

REPLACE

我们在使用数据库时可能会经常遇到这种情况。如果一个表在一个字段上建立了唯一索引,当我们再向这个表中使用已经存在的键值插入一条记录,那将会抛出一个主键冲突的错误。当然,我们可能想用新记录的值来覆盖原来的记录值。如果使用传统的做法,必须先使用DELETE语句删除原先的记录,然后再使用INSERT插入新的记录。而在MySQL中为我们提供了一种新的解决方案,这就是REPLACE语句。使用REPLACE插入一条记录时,如果不重复,REPLACE就和INSERT的功能一样,如果有重复记录,REPLACE就使用新记录的值来替换原来的记录值。

使用REPLACE的最大好处就是可以将DELETE和INSERT合二为一,形成一个原子操作。这样就可以不必考虑在同时使用DELETE和INSERT时添加事务等复杂操作了。

在使用REPLACE时,表中必须有唯一索引,而且这个索引所在的字段不能允许空值,否则REPLACE就和INSERT完全一样的。

在执行REPLACE后,系统返回了所影响的行数,如果返回1,说明在表中并没有重复的记录,如果返回2,说明有一条重复记录,系统自动先调用了DELETE删除这条记录,然后再记录用INSERT来插入这条记录。如果返回的值大于2,那说明有多个唯一索引,有多条记录被删除和插入。

INSERT ... ON DUPLICATE KEY UPDATE

INSERT ... ON DUPLICATE KEY UPDATE的作用:插入数据时,如果插入的数据中对应的主键或唯一索引的值在表中已存在,则将此条数据对应的字段值修改。如果不存在则直接插入。

如果您指定了ON DUPLICATE KEY UPDATE,并且插入行后会导致在一个UNIQUE索引或PRIMARY KEY中出现重复值,则执行旧行UPDATE。例如,如果列a被定义为UNIQUE,并且包含值1,则以下两个语句具有相同的效果:

          ->ON DUPLICATE KEY UPDATE c=c+1; 

mysql>UPDATE table SET c=c+1 WHERE a=1; 
</div>
如果行作为新记录被插入,则受影响行的值为1;如果原有的记录被更新,则受影响行的值为2。
注释:如果列b也是唯一列,则INSERT与此UPDATE语句相当

上面的那个问题的sql语句为:
</div>

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • MYSQL的REPLACE和ON DUPLICATE KEY UPDATE语句介绍解决问题实例
  • MySQL的Replace into 与Insert into on duplicate key update真正的不同之处
  • mysql ON DUPLICATE KEY UPDATE语句示例
  • insert into … on duplicate key update / replace into 多行数据介绍

相关文章

  • 2018-12-05MySQL出现SQL Error (2013)连接错误的解决方法_MySQL
  • 2018-12-05怎样手动打开mysql服务
  • 2018-12-05关于mysql general log 的相关操作
  • 2018-12-05sql2005 根据指定字段排序编号
  • 2018-12-05利用SQL注入漏洞登录后台的实现方法
  • 2018-12-05 mysql连接与断开服务器
  • 2018-12-05Sqlserver 2000/2005/2008 的收缩日志方法和清理日志方法
  • 2017-05-11Mysql的语句生成后门木马的方法
  • 2017-05-11从MySQL的源码剖析Innodb buffer的命中率计算
  • 2018-12-05MariaDB体验之数据库安装的图文详解

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • Oracle数据库安全策略
    • redis五大数据结果的测试
    • MYSQL使用inner join 进行 查询/删除/修改示例
    • 如何修改mysql中的允许主机访问权限得解析
    • SQL SERVER 日期格式转换详解
    • linux下mysql自动备份脚本代码
    • 关于数据引擎的详细介绍
    • 修改MySQL数据库中表和表中字段的编码方式的方法
    • mysql delete limit 使用方法详解
    • MySQL 主从延迟监控脚本(pt-heartbeat)

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有