當不存在值時如何從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中文網其他相關文章!