在MySQL中将表中的所有负值更新为NULL的最有效方法

时间:2017-02-16 00:11:35

标签: mysql null sql-update

我可以将表中的所有负值更新为一列的NULL:

UPDATE table_1
SET var1 = NULL
WHERE var1 < 0 
;

这很棒,但我有200列,我想将此UPDATE应用于。

我可以明确地运行这个相同的范例200次,一次更新一个变量。但是,这意味着我必须使用大约1,000行代码来完成它。

如果我使用if,我可能会在接近200行代码中完成它。但这仍然让我感到湿冷和不满意。

当我想在R中做这样的事情时,我可以使用df[df<0] <- NA这样的东西,只需几次按键,我就完成了。

在MySQL中,有没有办法以简洁,优雅和智能的方式解决这个问题?

1 个答案:

答案 0 :(得分:1)

您可以有条件地更新列,在不满足条件时使用IF()将原始值分配给它们:

UPDATE table_1
SET var1 = IF(var1 < 0, NULL, var1),
    var2 = IF(var2 < 0, NULL, var2)
    ...