插入...在重复键更新时-当主键以外的列已更改时

时间:2018-09-21 22:19:12

标签: mysql

我熟悉INSERT ... ON DUPLICATE KEY UPDATE

但是,这是我需要做的...如果主键已经存在,请忽略插入,除非另一个列(“姓氏”)已更改。

因此,如果“ LastName”列不同,请更新记录。如果没有,请忽略。要更新的列不是主键。如果新记录根本与现有的主键不匹配,请插入记录。

这感觉像是INSERT ... IGNOREINSERT ... ON DUPLICATE KEY UPDATE的混合体,但是我不确定做到这一点的最佳,最有效的方法。

当前,我正在使用INSERT ... ON DUPLICATE KEY UPDATE并只是为所有重复记录更新“ LastName”列。但是,这并不是很有效,特别是考虑到表中有数百万条记录。这是我当前的sql:

INSERT INTO members (PrimaryKeyNumber,LastName)
SELECT PrimaryKeyNumber, LastName FROM tempmembers
ON DUPLICATE KEY
    UPDATE LastName=tempmembers.LastName;

最有效的处理方式是什么?

0 个答案:

没有答案