我们在MySQL中使用innoDB的下表如下:
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);
有什么建议么?
最佳答案
这是一种方法:
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()
。