在 MySQL 数据库中,有时我们需要在插入数据时判断数据是否已经存在。
如果数据存在,则更新数据;
如果数据不存在,则插入新数据。
实现方法
使用 ON DUPLICATE KEY UPDATE
在 INSERT 语句后添加 ON DUPLICATE KEY UPDATE 子句可以实现这一需求。当要插入的行与表中现有记录的唯一索引或主键产生重复值时,就会发生旧行的更新;如果插入的行数据与现有表中记录的唯一索引或主键不重复,则执行新纪录插入操作。
采用 “ON DUPLICATE KEY UPDATE”,查看手册(https://dev.mysql.com/doc/refman/5.5/en/insert-on-duplicate.html)
示例代码
INSERT INTO table_name (column1, column2, column3) VALUES (value1, value2, value3) ON DUPLICATE KEY UPDATE column2 = value4, column3 = value5;
注:主键: column1
使用 REPLACE INTO
REPLACE INTO 语句的功能类似于 INSERT INTO,不同之处在于:REPLACE INTO 首先尝试将数据插入到表中,如果发现表中已经有此行数据(根据主键或唯一索引判断),则先删除此行数据,然后插入新数据。否则,直接插入新数据。
示例代码:
REPLACE INTO table_name (column1, column2, column3) VALUES (value1, value2, value3);
使用 INSERT IGNORE INTO
当插入数据时,如果数据存在,则忽略冲突的这行数据插入,其他插入正常执行。前提条件是插入的数据字段设置了主键或唯一索引。文章来源:https://www.toymoban.com/diary/sql/4.html
示例代码:
INSERT IGNORE INTO table_name (column1, column2, column3) VALUES (value1, value2, value3)
在实际应用中,可以根据具体需求选择合适的方法。需要注意的是,在使用 ON DUPLICATE KEY UPDATE 和 REPLACE INTO 时,要确保表中存在唯一索引或主键,否则可能导致数据重复或死锁等问题。文章来源地址https://www.toymoban.com/diary/sql/4.html
到此这篇关于MySQL数据库实现数据存在则更新,不存在则插入的实用方法的文章就介绍到这了,更多相关内容可以在右上角搜索或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!