当不存在任何值时如何从 MySQL 的 SUM 函数中检索“0”
MySQL 中的 SUM 函数提供了一种方便的方法来聚合数值价值观。但是,当查询期间没有找到匹配的行时,SUM 函数通常返回 NULL 值。对于某些用例,可能更需要返回“0”而不是 NULL。
利用 COALESCE 解决问题
此问题的解决方案在于合并函数。 COALESCE 允许您指定当第一个参数计算结果为 NULL 时要返回的默认值。
请考虑以下示例:
SELECT COALESCE(SUM(Column_1),0) FROM Table WHERE Column_2 = 'Test'
在此查询中,COALESCE 环绕 SUM 函数。如果 Column_2 等于“Test”的行的 Column_1 的 SUM 返回 NULL 值,COALESCE 将提供“0”。
演示和更多信息
访问 http ://www.sqlfiddle.com/#!2/d1542/3/0 获取该解决方案的现场演示。
要深入研究 COALESCE 的细微差别,请考虑以下场景,其中涉及三个不同的表值分布:
通过应用以下查询:
SELECT 'foo' as table_name, 'mixed null/non-null' as description, 21 as expected_sum, COALESCE(SUM(val), 0) as actual_sum FROM foo UNION ALL SELECT 'bar' as table_name, 'all non-null' as description, 21 as expected_sum, COALESCE(SUM(val), 0) as actual_sum FROM bar UNION ALL SELECT 'baz' as table_name, 'all null' as description, 0 as expected_sum, COALESCE(SUM(val), 0) as actual_sum FROM baz
您将获得以下结果:
TABLE_NAME | DESCRIPTION | EXPECTED_SUM | ACTUAL_SUM |
---|---|---|---|
foo | 混合空/非空 | 21 | 21 |
栏 | 全部非空 | 21 | 21 |
baz | all null | 0 | 0 |
正如您所观察到的,COALESCE 函数有效地为 ' 返回 '0' baz' 表,其中所有值均为 NULL。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3