MySQL 基础教程

MySQL 高级教程

MySQL SQL 语句

MySQL 笔记

original icon
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.knowledgedict.com/tutorial/mysql-insert-into-table-or-update-if-exists.html

MySQL 插入数据记录时,若存在则做更新(或者忽略此次操作)

MySQL 笔记 MySQL 笔记


我们在开发中,会经常在离线任务或者一次性导数据操作时,对 MySQL 表做插入数据记录时,如果对应的唯一键存在,就做更新数据操作或者忽略此次添加数据动作。

插入数据,存在(表明唯一键冲突)则更新

INSERT INTO table (id, name, age) VALUES 
(1, "B", 29) 
ON DUPLICATE KEY UPDATE 
name="B",
age=29

当插入数据至 table 表的主键字段(也是唯一键)id 值冲突时,执行 ON DUPLICATE KEY 后面的 UPDATE 操作。

如果批量操作,可以如下:

INSERT INTO table (a, b, c) VALUES 
(1, 2, 3),
(4, 5, 6),
(7, 8, 9),
ON DUPLICATE KEY UPDATE
a = VALUES(a),
b = VALUES(b),
c = VALUES(c)

此外,还需要了解的是,如果最终是插入操作,受影响行的值为 1;如果是更新操作,受到影响行的值为 2;如果更新的数据和已有的数据一样(就相当于没变,所有值保持不变),受到影响的行的值为 0。

还有另一种方式 replace into 操作,该方法本质上是先操作 delete 操作,然后再执行 insert 操作,如果插入的表除了自增主键,还有唯一键时,该方法执行后主键 id 会变化,这一点需要了解。

插入数据,存在(表明唯一键冲突)则忽略

INSERT IGNORE INTO table (id, name, age) VALUES 
(1, "B", 29)

在正常的 INSERT 语句中增加了 IGNORE 关键字,当主键 primary index 或唯一索引(unique index)冲突时,忽略此次插入操作。

通过 Flask SqlAlchemy 针对 MySQL db 进行插入操作时,若有主键或唯一键值冲突则修改指定字段内容,具体代码如何写? ...
MySQL 的 DML 遵守 SQL 的 DML 规范,数据操作语言(Data Manipulation Language),它主要用于添加 ...
MySQL 插入数据操作使用 INSERT INTO 语句,它属于 DML(数据操作语言)范畴,该语句插入方式支持从简单的添加操作到唯一键( ...
在 java 中使用 Map 时,针对 key 进行数值的累计运算,需要指定键不存在时,设置初始值,特定 key 存在时,对已有键值进行累加 ...
Hive SQL 数据操作主要是针对表的增删改查,和标准 SQL 类似,其中最常用的是查询语句,即 SELECT 相关语句。 ...