【发布时间】:2013-12-20 17:41:59
【问题描述】:
假设我有一个名为“控制”的字段。 如果“control”为空,那么我必须更新字段“control”、“f1”、“f2”、“f3”、“f4”、“f5”。 如果“控制”不为空,我只需更新“f4”和“f5”。 我应该如何实现这个目标? 我试过类似的东西:
UPDATE table SET
control = IF(control IS NULL, 1, do_nothing),
f1 = IF(control IS NULL, value1, do_nothing),
f2 = IF(control IS NULL, value2, do_nothing),
f3 = IF(control IS NULL, value3, do_nothing),
f4 = value4,
f5 = value5
WHERE id = XX
但“控制”一旦设置为 1 就不再为空,因此不会处理其他更新(但 f4 和 f5)。 此外,如何在 if 语句中告诉 ELSE 分支上的“do_nothing”? 变得困惑。 我想进行选择和嵌套更新,但出现了很多错误。 谢谢大家
【问题讨论】:
-
老实说,我只是对 f4 和 f5 使用更新语句,然后对其他列使用单独的语句。你也许可以得到一个更新语句来完成所有这些,但为什么要那么努力呢?
-
Excercise :) 说真的,因为我想在脚本页面上保持“轻松”,我想了解一些关于我缺少的 UPDATE 语句的复杂内容,因为我认为将所有内容都放在一个单个查询。我认为我拥有实现这一目标的所有工具,但我无法将它们混合在正确的“食谱”中
标签: mysql sql if-statement sql-update