我们在MySQL中使用innoDB的下表如下:
id Var1 Var2 Var 3 1 NULL 1 2 2 2 NULL NULL 3 4 2 NULL
我们假装产生的Var4每行具有NULL变量数:
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为true 1,false为false 0。您可以将它们加起来以获得总数。
1
0
作为更新:
update table t set var4 = ((var1 is null) + (var2 is null) + (var3 is null));
请注意,MySQL不支持ISNULL()。那更多的是SQL Server功能。但这不是ANSI标准,因此通常最好使用coalesce()。
ISNULL()
coalesce()