ON DUPLICATE KEY UPDATE with WHERE 条件

发布于 11-28 17:35 字数 466 浏览 0 评论 0原文

我使用 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 语句是怎样的吗?

多谢。

I update/insert values in a single table with the ON DUPLICATE KEY UPDATE function. So far everything is fine.

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

But now I would like to achieve that the update only is done if a condition (WHERE) is true.

Syntactically not correct:

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

Any ideas how the correct SQL statement is?

Thanks a lot.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

凡尘雨2024-12-05 17:35:30

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

只有在满足条件的情况下才用新值更新字段,否则保留旧值。

Using IF() should work, though it's not nice:

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 )

Only update the fields with new values if the condition is met, otherwise keep the old ones.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文