📜  在 MySQL 中插入重复密钥更新(1)

📅  最后修改于: 2023-12-03 15:37:24.727000             🧑  作者: Mango

在 MySQL 中插入重复密钥更新

在 MySQL 中插入数据时,可能会遇到重复的唯一密钥,此时可以选择更新已有的数据。本文将介绍如何在 MySQL 中使用INSERT INTO ... ON DUPLICATE KEY UPDATE语句来插入数据并更新重复的唯一密钥。

语法
INSERT INTO table_name (column1, column2, ..., column_n)
VALUES (value1, value2, ..., value_n)
ON DUPLICATE KEY UPDATE
  column1 = value1,
  column2 = value2,
  ...,
  column_n = value_n;

其中,INSERT INTO语句用于插入数据,table_name为表名,column1~column_n为列名,value1~value_n为对应的值。

当插入的数据遇到重复的唯一密钥时,将执行ON DUPLICATE KEY UPDATE语句。该语句用于更新已有数据的列值,column1~column_n为需要更新的列名,value1~value_n为对应的值。

示例

假设有一个表users,其中有一个唯一密钥为username,现在要插入一条新数据:

INSERT INTO users (username, age)
VALUES ('johndoe', 25)
ON DUPLICATE KEY UPDATE
  age = 26;

如果表中不存在usernamejohndoe的数据,则该语句将插入一条新数据,age列值为25。如果表中已存在usernamejohndoe的数据,则该语句将更新已有数据的age列值为26

注意事项
  • 仅在存在唯一密钥时才能使用ON DUPLICATE KEY UPDATE语句。
  • 重复的唯一密钥会触发更新操作,不会触发插入操作。
  • ON DUPLICATE KEY UPDATE语句可以更新多个列的值。
  • INSERT INTO语句和ON DUPLICATE KEY UPDATE语句中列名和值的数量必须匹配。