在MySQL中使用嵌套的case语句

时间:2015-12-09 05:48:12

标签: mysql

我有这样的查询:

UPDATE image
SET angle  = CASE  
WHEN id = 1000 
THEN 90  
ELSE 
angle 
END WHERE 
id IN(1000) 

正如您可能已经猜到的,这个SQL是动态构建的,因此使用单个语句我可以更新多个记录。我想要的是,在这种情况下,不是直接更新值为90,我希望它是增量的。所以我想我能做到:

UPDATE image
SET angle  = CASE  
WHEN id = 1000 
THEN angle + 90    //<-- instead of 90, I use (angle + 90)
ELSE 
angle 
END WHERE 
id IN(1000) 

我想弄清楚的唯一另一件事是if(angle + 90)&gt; = 360,那么我希望角度字段为0.我不确定如何编辑SQL语法来使这个发生。任何指针都非常感谢!

2 个答案:

答案 0 :(得分:2)

您可以使用模数运算符(%)。每当表达式angle + 90超过360度时,它将回绕到零。

UPDATE image
SET angle = CASE  
    WHEN id = 1000 
THEN (angle + 90) % 360
ELSE angle 
END
WHERE id IN(1000)

答案 1 :(得分:0)

您确实可以执行嵌套的UPDATE image SET angle = CASE WHEN id = 1000 THEN CASE WHEN angle >= 270 THEN 0 ELSE angle + 90 //<-- instead of 90, I use (angle + 90) END ELSE angle END WHERE id IN(1000) 语句

pickerView.hidden = true;