我们在使用innoDB的Mysql中有以下表格:
id Var1 Var2 Var 3
1 NULL 1 2
2 2 NULL NULL
3 4 2 NULL
我们假装使用每行NULL变量的数量生成Var4:
id Var4
1 1
2 2
3 1
我尝试失败了:
update db.table
set var4 = ISNULL(var1) + ISNULL(var2) + ISNULL(var3);
有什么建议吗?
答案 0 :(得分:2)
这是一种方式:
select id, ((var1 is null) + (var2 is null) + (var3 is null)) as var4
from table t;
MySQL将布尔值视为整数,其中true为1
,false为0
。您可以将它们添加起来以获得总数。
作为更新:
update table t
set var4 = ((var1 is null) + (var2 is null) + (var3 is null));
作为一个说明,MySQL并不支持ISNULL()
。这更像是一个SQL Server功能。但它无论如何都不是ANSI标准,因此通常最好使用coalesce()
。