当前位置: 首页 > 面试题库 >

计算每行mysql的Null变量的数量

潘银龙
2023-03-14
问题内容

我们在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。您可以将它们加起来以获得总数。

作为更新:

update table t
    set var4 = ((var1 is null) + (var2 is null) + (var3 is null));

请注意,MySQL不支持ISNULL()。那更多的是SQL Server功能。但这不是ANSI标准,因此通常最好使用coalesce()



 类似资料:
  • 问题内容: 我正在尝试编写一个脚本,该脚本将显示每列中非空值的数量以及表中的总行数。 我发现了几种方法可以做到这一点: 和 但是这些要求我手动输入每个列名称。有没有一种方法可以对每个列执行此操作而不列出它们? 问题答案: 正如Paolo所说,但这是一个示例:

  • 问题内容: 我有一个有趣的查询需要做。我有一张表,其中有一列包含ip地址编号(使用)和一列。我希望能够计算每天有唯一IP地址列的数量。也就是说,每天有多少个不同的ip行。因此,例如,如果一个IP地址在同一天两次,则在最终计数中将计为1;但是,如果同一IP地址在另一天,则将被计算为第二个计数。 示例数据: 问题答案: SQLFiddle演示

  • 准备数据: CREATE TABLE t1 (year YEAR(4), month INT(2) UNSIGNED ZEROFILL, day INT(2) UNSIGNED ZEROFILL); INSERT INTO t1 VALUES(2000,1,1),(2000,1,20),(2000,1,30),(2000,2,2), (2000,2

  • 问题内容: 我试图在一个数据框中创建一个新列,其中包含相应行的字数统计。我在寻找的是单词的总数,而不是每个不同单词的出现频率。我认为会有一个简单/快速的方法来做到这一点共同的任务,但周围的Googling和阅读SO职位)我卡住了。我已经尝试了在链接的SO帖子中提出的解决方案,但又遇到了很多属性错误。 结果是 和 结果是 问题答案: + 适用于任何非数字列。 如果您的单词是用单空格分隔的,则只需将空

  • 问题内容: 我有一个学校的作业,任务之一是解释很多小的计算,并解释为什么Java给您输出它给您的输出。 计算之一是: 1 +‘2’+ 3 这对我来说是一个词汇错误,因为老师在我的系统上使用了错误的“撇号”,但是我与其他同学交谈,他们告诉我他们得到了实际的输出,因此我开始阅读并发现了认为它应该表示一个char变量,并且我也了解 了系统的特定类型,所以我更改了符号以使其适用于我的系统,现在我得到了答案

  • 我正在为高速公路车队制作一个排名表,我有一个查询,根据车队结果计算所需数据。我正在努力解决的问题是分数差异(得分和对手得分之间的差异)。 所有查询都正常工作,除了 我得到的结果是空的,我猜这很简单,任何帮助都会很好