当不存在值时如何从 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 | mixed null/non-null | 21 | 21 |
bar | all non-null | 21 | 21 |
baz | all null | 0 | 0 |
As您可以观察到,COALESCE 函数有效地为“baz”表返回“0”,其中所有值均为 NULL。
以上是在空数据集上使用 MySQL 的 SUM 函数时如何返回'0”而不是 NULL?的详细内容。更多信息请关注PHP中文网其他相关文章!