重复记录UPDATE问题的MySql

时间:2014-07-21 01:02:03

标签: mysql sql

我有插入记录的场景,如果遇到重复的主键,我想更新记录。 现在,我有一个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被更改则时间戳改变

2 个答案:

答案 0 :(得分:0)

首先,如果您想使用on duplicate key update,那么您需要一个合适的唯一索引。我不确定这只是X,还是全部是四列。创建唯一索引很简单,例如:

create unique index idx_table_x on table(x);

或     在表(a,b,c,d,x)上创建唯一索引idx_table_a_b_c_d_x;

然后我认为这句话会做你想要的:

INSERT INTO table(a, b, c, d, X, timestamp)
    values (10, 11, 12, 13, 153.0, CURRENT_TIMESTAMP())
    ON DUPLICATE KEY UPDATE a = values(a);

它将忽略值相同的记录。

答案 1 :(得分:0)

以下是我需要的查询

INSERT INTO fitness_data(a,b,c,d,X)VALUES(10,11,12,13',XNEW)  ON DUPLICATE KEY UPDATE timestamp = IF(X!= VALUES(X),CURRENT_TIMESTAMP,timestamp),  X = XNEW

因此,如果X!= XNEW,则时间戳只会更新,不会更新