【发布时间】:2014-07-21 09:34:24
【问题描述】:
我有一个插入记录的场景,如果遇到重复的主键,我想更新记录。 现在,我有一列 X 不是主键的一部分。我希望我的记录在且仅当 X 的值与当前值不同时才更新。
现在,即使 X 相同,我的记录也在更新。仅当某些列不同时,如何编写查询以实现重复更新? 当前查询是
INSERT INTO table (a, b, c, d, X) values (10, 11, 12, 13, 153.0 ) ON DUPLICATE KEY UPDATE parameter_value = NEWX , timestamp = CURRENT_TIMESTAMP()
在其中,[a,b,c,d] 是我的主键,X 是值。 如果 X 相同,我也希望时间戳保持不变,如果 X 改变,时间戳也会改变
【问题讨论】:
-
另外,我不想在主键中包含 X
-
您的问题不清楚。您说“即使 X 相同,我的记录也在更新”。然而,这就是
on duplicate key update的原因。 -
抱歉混淆,当我说记录正在更新时,我的意思是时间戳列正在改变,X 保持不变,如果 X 相同,我也希望时间戳保持不变,如果 X 是,时间戳改变改变了