📜  mysql 如果不存在则插入 - SQL (1)

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

MySQL如果不存在则插入 - SQL

MySQL中我们经常需要在插入数据时判断表中是否已经存在该数据,如果不存在则插入,否则更新该数据。本文将介绍如何在MySQL中实现在不存在时插入数据的操作。

方法一:使用IF NOT EXISTS

使用 IF NOT EXISTS 可以避免出现重复数据的问题。可以通过如下的SQL语句实现该操作:

INSERT INTO table_name (col1, col2, col3)
SELECT 'val1', 'val2', 'val3'
FROM DUAL
WHERE NOT EXISTS (
    SELECT * FROM table_name
    WHERE col1 = 'val1' AND col2 = 'val2' AND col3 = 'val3'
);

上面的SQL语句会先执行 SELECT * FROM DUAL 查询语句,然后将查询结果插入到表中。如果表中已经存在相同的数据,那么 WHERE 子句的条件就不成立,数据不会被插入。

方法二:使用ON DUPLICATE KEY UPDATE

ON DUPLICATE KEY UPDATE 是MySQL中一个非常实用的操作。如果执行INSERT语句后发现主键冲突,那么就会进行更新操作。如果没有冲突,则会插入新数据。

INSERT INTO table_name (col1, col2, col3) VALUES ('val1', 'val2', 'val3')
ON DUPLICATE KEY UPDATE col1=VALUES(col1), col2=VALUES(col2), col3=VALUES(col3);

以上的SQL语句中,如果 col1 和 col2 组成的唯一索引已经存在了,则会更新 col3 字段的值。如果没有唯一索引,那么就不会更新任何数据。

总结

在MySQL中,我们可以使用 IF NOT EXISTS 或者 ON DUPLICATE KEY UPDATE 语句判断是否需要插入新数据。这些语句将确保数据的唯一性,并且避免了重复数据的问题。