使用WHERE条件的ON DUPLICATE KEY UPDATE

8

我使用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个回答

11

使用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 )

如果条件满足,只更新具有新值的字段,否则保留旧值。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接