MySQL中的INSERT ... ON DUPLICATE KEY UPDATE语句是一种非常有用的功能,它允许你在尝试插入新记录时,如果表中已经存在具有相同唯一键(通常是主键或唯一索引)的记录,则更新该记录的某些字段。
以下是INSERT ... ON DUPLICATE KEY UPDATE的基本语法:
INSERT INTO table_name (column1, column2, ...)
VALUES (value1, value2, ...)
ON DUPLICATE KEY UPDATE
column1 = CASE
WHEN column1 THEN value1
ELSE column1 END,
column2 = CASE
WHEN column2 THEN value2
ELSE column2 END,
...;这里的table_name是你想要插入或更新数据的表名,column1, column2, … 是你想要插入或更新的列名,value1, value2, … 是你想要插入的值。
当执行INSERT语句时,如果表中不存在具有相同唯一键的记录,MySQL将插入新的记录。如果存在具有相同唯一键的记录,MySQL将使用ON DUPLICATE KEY UPDATE子句中的更新逻辑来更新现有记录。
示例
假设你有一个名为users的表,其中包含id(主键)和email字段。如果你想要插入一个新的用户记录,或者如果该用户已经存在,则更新他们的电子邮件地址,可以使用以下语句:
INSERT INTO users (id, email)
VALUES (1, 'newemail@example.com')
ON DUPLICATE KEY UPDATE
email = VALUES(email);在这个例子中,如果id为1的用户已经存在,email字段将被更新为'newemail@example.com'。如果用户不存在,将插入一个新的记录。
请注意,ON DUPLICATE KEY UPDATE子句中的VALUES(column_name)是特殊的语法,它引用了INSERT语句中为该列提供的值。
这种用法特别适用于需要同步数据或在插入时更新记录的场景。




苏公网安备32021302001419号