我们在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变量,并且我也了解 了系统的特定类型,所以我更改了符号以使其适用于我的系统,现在我得到了答案
我正在为高速公路车队制作一个排名表,我有一个查询,根据车队结果计算所需数据。我正在努力解决的问题是分数差异(得分和对手得分之间的差异)。 所有查询都正常工作,除了 我得到的结果是空的,我猜这很简单,任何帮助都会很好