📜  mysql 忽略重复键 - SQL (1)

📅  最后修改于: 2023-12-03 14:44:29.888000             🧑  作者: Mango

MySQL 忽略重复键 - SQL

在 MySQL 数据库中,如果你试图在一个已经存在的表中插入一个已经存在的键值,你将会遇到一个错误。这个错误提示你的键值已经存在并且 MySQL 拒绝了你的插入操作。

但是,有时候我们希望忽略这个错误,仅仅尝试插入这个键,并且不会做任何操作。MySQL 提供了一种方法叫做 INSERT IGNORE 来实现这个功能。

INSERT IGNORE 是 MySQL 中一条常用的操作语句,它的作用是在插入数据时忽略重复键的错误,并不影响已有的数据。如果插入的数据主键已经存在,那么不会进行插入操作。

下面是一个使用 INSERT IGNORE 实现插入数据并忽略重复键的 SQL 示例:

INSERT IGNORE INTO `table1` (`id`, `name`) VALUES (1, 'John');

当你尝试插入 id=1 的数据时,如果 id 已经存在于 table1 中,MySQL 不会返回错误并且不会插入任何数据。

除了 INSERT IGNORE 之外,MySQL 还提供了另一种方式来处理重复键错误:ON DUPLICATE KEY UPDATE。这个语句允许你在插入时指定更新操作,如果这个键值已经存在,就会更新已经存在的记录。

下面是一个使用 ON DUPLICATE KEY UPDATE 来插入数据、更新已经存在的键值的 SQL 示例:

INSERT INTO `table1` (`id`, `name`) VALUES (1, 'John') ON DUPLICATE KEY UPDATE `name`='Mike';

这个语句的意思是,如果 id=1 的记录已经存在,就将该记录的 name 更改为 Mike

总的来说,忽略或更新重复键是 MySQL 中两个很实用的操作,在开发时非常有用。在实际应用中,看具体的业务场景而定,选择合适的语句进行操作。