當不存在任何值時如何從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 | EXP ECTED_SUM | ACTUAL_SUM |
---|---|---|---|
foo | 混合空/非空 | 21 | 混合空/非空 |
]21 | 欄 | 全部非空 | |
21 | baz | ]全部為空 |
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3