我如何在mysql中的update…set中使用case和if语句?
这就是我想做的:我如何在mysql中的update…set中使用case和if语句?,mysql,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))
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'
更新
我的桌子
设置
列_a=(
挑选
案例
当列_a为空时,则为20
当列_a<10时,则列_a
当列_a=10时,则为20
ELSE最小值((a列,20))
结束
进入@var_a
/*我现在想做一个if…else*/
IF(var_a>UNIX_TIMESTAMP(),null,var_a)
)
哪里
列_b='something'
我该怎么做这样的事?谢谢 我认为您可以使用嵌套的
案例来执行此操作:
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';
更新
我的桌子
设置
列_a=(
案例
当(@var_a:=(
案例
当列_a为空时,则为20
当列_a<10时,则列_a
当列_a=10时,则为20
除此之外(第a列,第20列)
通过MIN(column_a,20)
,你的意思是取最小值吗?@MichaelBerkowski Yes和什么表达式是一些带有变量a的表达式?所有这些都应该在案例中单独表达。@MichaelBerkowski这是使用变量a的另一个比较。我这样做:var\u a>UNIX\u TIMESTAMP()
如果你发现自己就你的问题向某人提出了20个问题,这意味着你在解释你的问题方面做得很差,你应该把你的问题解释得更清楚。我会尝试一下,谢谢!是的,我知道MIN,我忘了包括一组括号。我在问题中输入的值例如,它们实际上是时间戳,与UNIX_TIMESTAMP()比较接近。