【问题标题】:Update if else basic如果其他基本更新
【发布时间】:2015-03-24 10:25:46
【问题描述】:

我正在尝试完成 MySQL 更新,这应该很容易,当查询运行时,如果值为 0,则将其设置为 1,如果为 1,则将其设置为 0。

update agents set manual_import = 0 if manual_import =1,set manual_import = 1 if manual_import = 1

上面有很多例子,但哪一个最简单?

【问题讨论】:

标签: mysql


【解决方案1】:

一些数学知识会有所帮助:

UPDATE agents
SET manual_import = 1 - manual_import       # turn 1 to 0 and 0 to 1
WHERE manual_import IN (0, 1)               # but only when the value is 0 or 1

【讨论】:

    【解决方案2】:

    好的,我发现这适用于我自己的问题和任何其他类似的简单查询。

    UPDATE agents SET manual_import = CASE
            WHEN manual_import = 1 THEN 0
            WHEN manual_import = 0 THEN 1    
            END
        WHERE a_id = $a_id
    

    【讨论】:

    • 如果manual_import 不只是取值 0 和 1,此命令会将任何其他值设置为 NULL
    【解决方案3】:

    你可以尝试使用 case when then

    update agents set
    manual_import = case when manual_import = 1 then 0 else 1
    end
    

    我假设 manual_import 只有两个值 0 和 1,如果它不止 1 和 0,那么试试这个:

        UPDATE agents SET manual_import = case
        when manual_import = 1 then 0
        when manual_import = 0 then 1  else manual_import   
        END
    

    【讨论】:

      【解决方案4】:

      在 oracle 数据库中,最简单的方法是“解码”功能。正如this 问题中的回答,您可以使用以下“如果”:

      update agents set manual_import = if(manual_import=1,0,1)
      

      【讨论】:

      • 如果manual_import 接受的不仅仅是值 0 和 1,那么所有不是 1(而不仅仅是 0)的值都将变为 1。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-07
      • 2022-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多