通过 INSERT INTO … ON DUPLICATE KEY UPDATE 语句来将一张表的数据合并到另一张表中,假设两个表具有相同的结构:
-- 插入数据并在目标表中已存在时执行更新
INSERT INTO target_table (column1, column2, ...)
SELECT source_table.column1, source_table.column2, ...
FROM source_table
ON DUPLICATE KEY UPDATE
target_table.column1 = source_table.column1, target_table.column2 = source_table.column2, ...;
说明:
source_table : 是包含要合并数据的源表。
target_table : 是目标表,它可能已经包含一些数据。
column1, column2, … : 是要合并的列,这些列的名称和顺序应该在两个表中一致。
>> 确保目标表中的列具有唯一键或主键约束,以便可以根据唯一键值来确定是否执行更新。
如果目标表中已存在具有相同唯一键值的行,将执行更新操作以覆盖目标表中的数据。若条件不匹配任何现有行(也就是目标表中没有相同的唯一键值),那么将会执行插入操作,新的行将被插入到目标表中。
INSERT INTO … ON DUPLICATE KEY UPDATE 语句具有两种操作:
更新(Update):如果条件匹配(目标表中已存在具有相同唯一键值的行),则执行更新操作,将源表的值更新到目标表中。
插入(Insert):如果条件不匹配,将执行插入操作,将新行插入目标表。