如何在更新中使用case和if语句...在mysql中设置?

时间:2014-12-23 17:02:03

标签: mysql

这就是我要做的事情:

UPDATE
    my_table
SET
    column_a = (
        SELECT
        CASE
            WHEN column_a is null THEN 20
            WHEN column_a < 10 THEN column_a
            WHEN column_a = 10 THEN 20
            ELSE MIN((column_a, 20))
        END
        INTO @var_a
        /* I want to do an if...else now */
        IF(var_a > UNIX_TIMESTAMP(), null, var_a)
    )
WHERE
    column_b = 'something'

我该怎么办?谢谢!

1 个答案:

答案 0 :(得分:2)

我认为您可以使用嵌套case来执行此操作:

UPDATE
    my_table
SET
    column_a = (
        case
            when (@var_a := (
                case 
                    when column_a is null then 20
                    when column_a < 10 then column_a
                    when column_a = 10 then 20
                    else least(column_a, 20)
                end)) <= unix_timestamp() then @var_a
            else null
        end)
WHERE
    column_b = 'something';

请注意,min()聚合函数,您无法使用它来获得最少的输入:您需要使用least()

希望这有帮助