我们在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()

07-26 05:35
查看更多