[英]How do I get this MySQL query / PHP function to return a zero if nothing is found?
[英]How do I get SUM function in MySQL to return '0' if no values are found?
假設我在 MySQL 中有一個簡單的函數:
SELECT SUM(Column_1)
FROM Table
WHERE Column_2 = 'Test'
如果Column_
2 中沒有條目包含文本“Test”,則此函數返回NULL
,而我希望它返回 0。
我知道這里已經多次問過類似的問題,但我無法根據我的目的調整答案,因此如果您能幫助我解決這個問題,我將不勝感激。
使用COALESCE
來避免這種結果。
SELECT COALESCE(SUM(column),0)
FROM table
WHERE ...
要查看它的實際效果,請參閱此 sql 小提琴: http ://www.sqlfiddle.com/#!2/d1542/3 /0
更多信息:
給定三張表(一張全數字,一張全空,一張混合):
MySQL 5.5.32 架構設置:
CREATE TABLE foo
(
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
val INT
);
INSERT INTO foo (val) VALUES
(null),(1),(null),(2),(null),(3),(null),(4),(null),(5),(null),(6),(null);
CREATE TABLE bar
(
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
val INT
);
INSERT INTO bar (val) VALUES
(1),(2),(3),(4),(5),(6);
CREATE TABLE baz
(
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
val INT
);
INSERT INTO baz (val) VALUES
(null),(null),(null),(null),(null),(null);
查詢 1 :
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 |
無法准確獲得您所要求的內容,但是如果您使用的是聚合 SUM 函數,這意味着您正在對表進行分組。
查詢是這樣的 MYSQL
Select IFNULL(SUM(COLUMN1),0) as total from mytable group by condition
如果列的總和為 0,則顯示為空
select if(sum(column)>0,sum(column),'')
from table
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.