did*_*ido 6 mysql if-statement
我想在MySQL中更新一个表,如下所示:
UPDATE Table
SET A = '20' IF A > 20
SET A = A IF A < 20
SET A = 0 IF A <= 1
WHERE A IS NOT NULL;
Run Code Online (Sandbox Code Playgroud)
但上面的SQL是无效的语法.我也试过这个:
UPDATE table
SET A = IF(A > 20, 20, IF(A < 20, A, 0));
Run Code Online (Sandbox Code Playgroud)
但也是无效的语法.如何在这样的更新查询中使用if语句?
JYe*_*ton 11
我认为你在那里99%:
UPDATE table
SET A = IF(A > 20, 20, IF(A < 20 && A > 1, A, 0))
WHERE A IS NOT NULL;
Run Code Online (Sandbox Code Playgroud)
添加&& A > 1到第二个IF语句,您的第三个条件就满足了.
编辑:
Per @ Andre对问题的评论以及嵌套IF难以阅读的建议,你也可以做一些不做任何不必要的工作并且可读的查询:
UPDATE table SET A = 20 WHERE A > 20;
UPDATE table SET A = 0 WHERE A <= 1;
Run Code Online (Sandbox Code Playgroud)
当A为NULL时,它将不满足这些条件中的任何一个,因此无需指定A不为NULL.
接下来,没有必要像@Andre建议的第三个条件.如果A在1到20之间,它将保持原样.
最后,将A设置为0,其中A小于或等于1似乎不常见.如果你想比1(包括负值)为0,那么你应该换,您只需设置值小于1的值将变为0 <的<=.
UPDATE Table
SET A = Case
When A > 20 Then 20
When A <= 1 Then 0
End
WHERE A IS NOT NULL and ( A > 20 or A <= 1 )
Run Code Online (Sandbox Code Playgroud)
或者更简单地说,2个陈述
UPDATE Table
SET A = 20
where A > 20;
UPDATE Table
SET A = 0
where A <= 1;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
21611 次 |
| 最近记录: |