首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL更新列,它是另一列中的值。

问MySQL更新列,它是另一列中的值。
EN

Stack Overflow用户
提问于 2013-12-20 06:15:55
回答 2查看 92关注 0票数 2

这是我先前提出的与我的查询有关的问题。MySQL选择列,它是另一列中的值

问题是要对提取的值执行操作,并将其存储回原始db中。我尝试过使用update & case,但无法实现它。

代码语言:javascript
复制
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 

有什么帮助吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-12-20 09:33:55

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

代码语言:javascript
复制
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. 我用较少冗长的CASE更改了IF(),尽管如果您更喜欢它,您可以使用相同的方式。
  2. 这种方法有一个可能的副作用,因为它总是用新的或旧的值更新列。例如,您在表上定义了一个触发器,这可能很重要。
  3. 您希望应用WHERE子句以确保其他reason代码的行不受影响。

这是SQLFiddle演示

票数 1
EN

Stack Overflow用户

发布于 2013-12-20 06:33:30

代码语言:javascript
复制
update msisdn_table set  NoAnswer = NoAnswer-1 where (NoAnswer>0) ;
update msisdn_table set  NetworkBusy = NetworkBusy-1 where (NetworkBusy = NetworkBusy-1) ;
update msisdn_table set  CallRejection = CallRejection-1 where (CallRejection>0) ;
update msisdn_table set  'Unavailable' = 'Unavailable'-1 where (Unavailable>0) ;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20697458

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档