这就是我要做的事情:
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'
我该怎么办?谢谢!
答案 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()
。
希望这有帮助