我使用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语句?
非常感谢。
答案 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 )
如果满足条件,则仅使用新值更新字段,否则保留旧值。