我想像这样更新 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;
但上面的 SQL 语法无效。我也尝试过这个:
UPDATE table
SET A = IF(A > 20, 20, IF(A < 20, A, 0));
但也是无效语法。如何在这样的更新查询中使用 if 语句?
我想你99%都做到了:
UPDATE table
SET A = IF(A > 20, 20, IF(A < 20 && A > 1, A, 0))
WHERE A IS NOT NULL;
Add the && A > 1
到第二个 IF 语句,并且满足第三个条件。
Edit:
根据 @Andre 对问题的评论以及嵌套的建议IF
很难阅读,您也可以将其作为几个查询来执行,这些查询不会执行任何不必要的工作并且可读:
UPDATE table SET A = 20 WHERE A > 20;
UPDATE table SET A = 0 WHERE A <= 1;
当 A 为 NULL 时,它将不满足这些条件中的任何一个,因此无需指定 A 不为 NULL。
接下来,不需要@Andre 建议的第三个条件。如果 A 介于 1 和 20 之间,则保持原样。
最后,在 A 小于或等于 1 的情况下将 A 设置为 0 似乎不寻常。值 1 将更改为 0。如果您打算简单地将小于 1 的值(包括负值)设置为 0,那么您应该交换<
for <=
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)