gpt4 book ai didi

MySQL更新列,这是另一列中的值

转载 作者:搜寻专家 更新时间:2023-10-30 20:40:53 26 4
gpt4 key购买 nike

这是我之前与我的查询相关的问题。 MySQL select column which is a value in another column

问题是想要对提取的值进行操作并将其存储回原始数据库。我试过使用 update & case 但我无法实现它。

update msisdn_table
CASE reason
WHEN 'NoAnswer' THEN (case when (NoAnswer>0) then update msisdn_table set NoAnswer = NoAnswer-1 end)
WHEN 'NetworkBusy' THEN (case when NetworkBusy>0 then update msisdn_table set NetworkBusy = NetworkBusy-1 end)
WHEN 'CallRejection' THEN (case when CallRejection>0 then update msisdn_table set CallRejection = CallRejection-1 end)
WHEN 'Unavailable' THEN (case when Unavailable>0 then update msisdn_table set Unavailable = Unavailable-1 end)
END

有什么帮助吗?

最佳答案

如果你想做一个语句,就这样试试

UPDATE msisdn_table
SET NoAnswer = IFNULL(IF(reason = 'NoAnswer',
NULLIF(NoAnswer, 0) - 1, NoAnswer), 0),
NetworkBusy = IFNULL(IF(reason = 'NetworkBusy',
NULLIF(NetworkBusy, 0) - 1, NetworkBusy), 0),
CallRejection = IFNULL(IF(reason = 'CallRejection',
NULLIF(CallRejection, 0) - 1, CallRejection), 0),
Unavailable = IFNULL(IF(reason = 'Unavailable',
NULLIF(Unavailable, 0) - 1, Unavailable), 0)
WHERE reason IN('NoAnswer', 'NetworkBusy', 'CallRejection', 'Unavailable');

注意:

  1. 我用不那么冗长的 IF() 更改了 CASE,但如果您更喜欢它,您可以以相同的方式使用它。
  2. 这种方法有一个可能的副作用,因为它总是用新值或旧值更新列。例如,如果您在表上定义了触发器,这可能很重要。
  3. 您想应用WHERE 子句以确保具有其他原因 代码的行不受影响

这是 SQLFiddle 演示

关于MySQL更新列,这是另一列中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20697458/

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