COUNTNULL()作为MySQL函数。它将如何运作?
我确信这将是一个聚合函数,因为它将计算一组数据COUNTNULL()作为MySQL函数。它将如何运作?,mysql,Mysql,我确信这将是一个聚合函数,因为它将计算一组数据 但是,在MySQL中,COUNT()函数是如何运行的,以执行其各自的操作的?不是100%清楚您在寻找什么,而是为了在列中选择空值计数,我使用如下方法: SELECT SUM(CASE WHEN columnname IS NULL THEN 1 ELSE 0 END) FROM tablename; 当该值为NULL时,将为其赋值1,否则为0,然后在所需的任何聚合上求和。不是100%清楚您要查找的内容,但是为了在列中选择NULL值的计数,我使用如
但是,在MySQL中,COUNT()函数是如何运行的,以执行其各自的操作的?不是100%清楚您在寻找什么,而是为了在列中选择空值计数,我使用如下方法:
SELECT SUM(CASE WHEN columnname IS NULL THEN 1 ELSE 0 END) FROM tablename;
当该值为NULL时,将为其赋值1,否则为0,然后在所需的任何聚合上求和。不是100%清楚您要查找的内容,但是为了在列中选择NULL值的计数,我使用如下方法:
SELECT SUM(CASE WHEN columnname IS NULL THEN 1 ELSE 0 END) FROM tablename;
当该值为NULL时,将为其赋值1,否则为0,然后在所需的任何聚合上求和。计数(*)是一个聚合函数。在选择列表中,表达式COUNT(*)
将返回行数。如果没有GROUP BY
子句,所有行都将折叠为一行,COUNT(*)
聚合将包含一个非负整数值,表示折叠的行数。。。行数的“计数”
如您所知,涉及COUNT()
聚合的其他表达式在NULL
值方面的操作稍有不同
在选择列表中,表达式COUNT(expr)
的操作与COUNT(*)
的操作完全相同,除了值为expr
且计算结果为NULL
的行不包括在计数中
这一切都是根据规范操作的
至于不存在的COUNTNULL()
函数,它取决于您想要实现什么。如果要获取表达式具有空值的行数,可以执行条件测试,并返回非空值,然后使用现有的count
聚合,例如:
SELECT COUNT(CASE WHEN expr IS NULL THEN 1 ELSE NULL END) AS `COUNTNULL`
FROM ...
COUNT(*)
是一个聚合函数。在选择列表中,表达式COUNT(*)
将返回行数。如果没有GROUP BY
子句,所有行都将折叠为一行,COUNT(*)
聚合将包含一个非负整数值,表示折叠的行数。。。行数的“计数”
如您所知,涉及COUNT()
聚合的其他表达式在NULL
值方面的操作稍有不同
在选择列表中,表达式COUNT(expr)
的操作与COUNT(*)
的操作完全相同,除了值为expr
且计算结果为NULL
的行不包括在计数中
这一切都是根据规范操作的
至于不存在的COUNTNULL()
函数,它取决于您想要实现什么。如果要获取表达式具有空值的行数,可以执行条件测试,并返回非空值,然后使用现有的count
聚合,例如:
SELECT COUNT(CASE WHEN expr IS NULL THEN 1 ELSE NULL END) AS `COUNTNULL`
FROM ...
我不记得我在哪里学过这项技术,但可以说,反转
COUNT()。。。但这是完全合法的:
COUNT(column1 IS NULL OR NULL)
…这仅正确计算column1为null的行,因为它等效于以下表达式
COUNT( (column1 IS NULL) OR (NULL) )
它是一个布尔表达式,只能计算为1(“true”,当column1为null时,此行被计数),或null(否则,此行将不被计数)
从逻辑上讲,它相当于@spencer7593提供的CASE
表达式。我不记得在哪里学过这项技术,但可以说,反转COUNT()逻辑的最优雅的方法,或者至少是最简单的方法是使用这个表达式,不可否认,这给人的第一印象是,黑魔法可能以某种方式参与其中。。。但这是完全合法的:
COUNT(column1 IS NULL OR NULL)
…这仅正确计算column1为null的行,因为它等效于以下表达式
COUNT( (column1 IS NULL) OR (NULL) )
它是一个布尔表达式,只能计算为1(“true”,当column1为null时,此行被计数),或null(否则,此行将不被计数)
逻辑上,它相当于@spencer7593提供的CASE
表达式。你的问题不清楚,你想发明这个函数吗?是的。我想发明这个函数。那么,假设我发明了它,它将如何运行呢?它会像COUNT(*)等其他函数一样运行吗?我看不出有什么理由需要这样的函数。如果创建这样一个函数,则使用该函数的任何SQL语句都将无法移植到其他系统。使用已有的函数也可以达到同样的效果。你的问题不清楚,你想发明这个函数吗?是的。我想发明这个函数。那么,假设我发明了它,它将如何运行呢?它会像COUNT(*)等其他函数一样运行吗?我看不出有什么理由需要这样的函数。如果创建这样一个函数,则使用该函数的任何SQL语句都将无法移植到其他系统。使用已经可用的函数可以获得相同的结果。SUM
和COUNT
之间有一个小的区别,即没有行满足谓词的情况。也就是说,对于这个答案中的查询。。。当表tablename
中没有行时。SUM()
聚合将返回NULL
,COUNT()
聚合将返回0
。我想投资一个COUNTNULL()函数,我想它将是一个聚合函数。我的假设正确吗,因为其他也计算数据集合的函数都是聚合函数?@BIG\u MAC\u AND\u FRIES Y