如何在MySQL更新查询中使用If-Then-Else?
我想在MySQL中更新一个表,如下所示:如何在MySQL更新查询中使用If-Then-Else?,mysql,if-statement,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; 更新表 如果A>20,则设置A='20' 如果A20或A UPDATE Table SET A = 20 where A > 20; UPDATE Table SET A = 0 where A <= 1; UP
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;
更新表
如果A>20,则设置A='20'
如果A<20,则设置A=A
如果A为20,20,如果(A<20,A,0)),则设置A=0;
但是也是无效的语法。如何在这样的更新查询中使用if语句?更新表
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 )
设置一个=案例
当A>20时,则为20
当一个20或一个20;
更新表
设置A=0
其中A我认为你99%都在那里:
UPDATE table
SET A = IF(A > 20, 20, IF(A < 20 && A > 1, A, 0))
WHERE A IS NOT NULL;
当A为NULL时,它将不满足这两个条件之一,因此无需指定A不为NULL
其次,没有必要像@Andre建议的那样满足第三个条件。如果A在1到20之间,它会保持原样
最后,如果A小于或等于1,则将A设置为0似乎很不寻常。值1将更改为0。如果您打算简单地将小于1的值(包括负值)设置为0,那么您应该交换大小写是否应该省略单引号以使用int值(而不是像“20”和“a”等字符串文字)?这说明了,他的原版具有类似的类型不匹配,我不想猜测这一点。虽然如果存储的值是int,将其与'20'进行比较将在mysql中起作用,同样地,将其设置为'20'也将起作用,因为mysql将计算并转换字符串int。但是'A'将导致类型错误。您不需要第二种情况。Set A=A不做任何事情。在where子句中筛选此项应该更快:其中A不为NULL且(A>20或A
UPDATE Table
SET A = 20
where A > 20;
UPDATE Table
SET A = 0
where A <= 1;
UPDATE table
SET A = IF(A > 20, 20, IF(A < 20 && A > 1, A, 0))
WHERE A IS NOT NULL;
UPDATE table SET A = 20 WHERE A > 20;
UPDATE table SET A = 0 WHERE A <= 1;