gpt4 book ai didi

MySQL 根据单个 IF 更新多列

转载 作者:行者123 更新时间:2023-11-30 23:03:56 25 4
gpt4 key购买 nike

我有一个很大的查询要优化。

这是一个INSERT INTO ... ON DUPLICATE KEY UPDATE。但是,我只需要在特定条件下更新线路。因为我知道您不能将 WHEREON DUPLICATE KEY UPDATE 一起使用,所以我使用 IF

但我需要根据完全相同的条件更新两列。问题是条件很长。它是 column1 IN(大量连接选择)。在那里吃两次似乎也不对。我会创建一个临时表,但由于这只在 UPDATE 部分而不是 INSERT 部分需要,因此在某些情况下会产生不必要的工作。

我的问题是:

How can I update multiple columns based on single condition in ON DUPLICATE KEY UPDATE.

最佳答案

update 语句可以引用 insert 的 from 子句中的值。 . .选择。这个想法是接受您的查询并使其成为子查询。然后再添加一列,即您的计算列。您可以在 set 子句中使用它:

insert into table(col1, . . .)
select . . .
from (select cols, . . .,
col1 in (complicated stuff here) as IsPresent
from . . .
) t
on duplicate key update colx = if(t.IsPresent, a, b), coly(if.tIsPresent, d, e);

当然,您可以摆脱子查询(它有自己的开销),但这是您描述的最通用的方法。

关于MySQL 根据单个 IF 更新多列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22688751/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com