使用WHERE条件打开DUPLICATE KEY UPDATE

时间:2011-08-08 13:31:17

标签: mysql key duplicates

我使用ON DUPLICATE KEY UPDATE函数在单个表中更新/插入值。到目前为止一切都很好。

INSERT INTO table1 SET field1=aa, field2=bb, field3=cc
ON DUPLICATE KEY UPDATE SET field1=aa, field2=bb, field3=cc;

但是现在我想实现仅在条件(WHERE)为真时才进行更新。

语法上不正确:

INSERT INTO table1 SET field1=aa, field2=bb, field3=cc
ON DUPLICATE KEY UPDATE SET field1=aa, field2=bb, field3=cc WHERE field4=zz;

任何想法如何正确的SQL语句?

非常感谢。

1 个答案:

答案 0 :(得分:9)

使用IF()应该可以工作,虽然它并不好:

INSERT INTO table1 SET 
 field1=aa, 
 field2=bb, 
 field3=cc 
ON DUPLICATE KEY UPDATE SET 
 field1 = IF( field4 = zz, aa, field1 ),
 field2 = IF( field4 = zz, bb, field2 ),
 field3 = IF( field4 = zz, cc, field3 )

如果满足条件,则仅使用新值更新字段,否则保留旧值。