美文网首页
MySQL 当记录不存在时insert,当记录存在时update

MySQL 当记录不存在时insert,当记录存在时update

作者: 三招六式一把铁斧 | 来源:发表于2018-03-04 00:17 被阅读0次

目前网上有三种方法,暂时只尝试了其中的一种

第一种
  1. 利用关键字:REPLACE
    注:(1)我们在使用数据库时可能会经常遇到这种情况。如果一个表在一个字段上建立了唯一索引,当我们再向这个表中使用已经存在的键值insert一条记录,那将会抛出一个主键冲突的错误。当然,我们可能想用新记录的值来覆盖原来的记录值。如果使用传统的做法,必须先使用DELETE语句删除原先的记录,然后再使用 INSERTinsert新的记录。而在MySQL中为我们提供了一种新的解决方案,这就是REPLACE语句。使用REPLACEinsert一条记录时,如果不重复,REPLACE就和INSERT的功能一样,如果有重复记录,REPLACE就使用新记录的值来替换原来的记录值。
    (2)使用REPLACE的最大好处就是可以将DELETE和INSERT合二为一,形成一个原子操作。这样就可以不必考虑在同时使用DELETE和INSERT时添加事务等复杂操作了
    (3)在执行REPLACE后,系统返回了所影响的行数,如果返回1,说明在表中并没有重复的记录,如果返回2,说明有一条重复记录,系统自动先调用了 DELETE删除这条记录,然后再记录用INSERT来insert这条记录。如果返回的值大于2,那说明有多个唯一索引,有多条记录被删除和insert。
  2. REPLACE的语法和INSERT非常的相似,如下面的REPLACE语句是insert或更新一条记录。
    示例:
replace into rap_order values(4,112,21,'A01011101',234);
REPLACE做插入操作.png
replace into rap_order values(1,112,21,'A01011101',234);
REPLACE做更新操作.png
replace into rap_order values(5,115,21,'A01011101',234),(5,114,22,'A01011101',234);
#注:replace 同时向rpa_order 中into多条记录,在添加的过程中最后面的重复的记录直接将前面的记录更新
REPLACE做更新操作.png
第二种

使用insert ... on duplicate key update...
eg:

INSERT INTO shebao_collection(customer_code,customer_name) VALUES('1001','hw') ON DUPLICATE KEY UPDATE numbers = 5
SQL执行前
SQL执行后
  • 注:
1. 重复的字段必须是唯一的,主键或者唯一索引,上表中customer_code是唯一索引
2. 后面的update后面直接写字段名即可,不需要写values()、where 条件等
3. 非常适合只更新表中部分信息,同事保留没有修改过的旧有信息

相关文章

  • MySQL 当记录不存在时insert,当记录存在时update

    目前网上有三种方法,暂时只尝试了其中的一种 第一种 利用关键字:REPLACE注:(1)我们在使用数据库时可能会经...

  • 当记录不存在时insert/当记录存在时update

    1.插入之前可以根据唯一字段判断是否数据库已经存在这条数据,如果有,则返回false,没有则返回true。 我本地...

  • MySQL 当记录不存在时insert

    一、使用场景 我们使用MYSQL的时候,为了防止重复的插入,我们就需要先判断是否数据库中时候存在相同的记录。MyS...

  • Oracle中的Merge into的用法

    在进行SQL语句编写时,我们经常会遇到大量的同时进行Insert/Update的语句 ,也就是说当存在记录时,就更...

  • Mysql Insert Or Update语法例子

    有的时候会需要写一段insert的sql,如果主键存在,则update;如果主键不存在,则insert。Mysql...

  • 如果不存在则插入,存在则不插入

    MySQL INSERT插入条件判断:如果不存在则插入我们经常需要进行sql的批量插入,要求:该条记录不存在则插入...

  • INSERT-OR-UPDATE

    需求 我们对一条记录进行记录进行操作时,如果该条记录存在则更新,如果不存在则执行插入操作。 实现方式 在MySQL...

  • MySQL insert or update

    业务场景 我们经常会遇到类似的业务场景,插入一条数据如果他不存在则执行 insert ,当这条记录存在的时候,我们...

  • SQL(二)

    修改数据 INSERT:插入新记录;UPDATE:更新已有记录;DELETE:删除已有记录。 INSERT INS...

  • 说说MySQL affected-rows

    问题初见~ 当每次我们在在mysql中执行了DML(本文主要关注insert, update, delete, r...

网友评论

      本文标题:MySQL 当记录不存在时insert,当记录存在时update

      本文链接:https://www.haomeiwen.com/subject/xraxfftx.html