MySQL查询返回数字';零';如果没有结果
当选择一个日期而该日期在我的表中不存在时,它当前将返回一个空结果集。我如何才能为这些空结果集返回数字零MySQL查询返回数字';零';如果没有结果,mysql,sum,resultset,zero,Mysql,Sum,Resultset,Zero,当选择一个日期而该日期在我的表中不存在时,它当前将返回一个空结果集。我如何才能为这些空结果集返回数字零 SELECT SUM(TOTAL), SUM(5STAR), STORE, DATE FROM `table` WHERE DATE >= '2012-02-24' GROUP BY TOTAL MySQL returned an empty result set (i.e. zero rows) 我想将SUM(TOTAL)和SUM(5STAR)(如果是零行)的结果作
SELECT SUM(TOTAL), SUM(5STAR), STORE, DATE
FROM `table` WHERE DATE >= '2012-02-24' GROUP BY TOTAL
MySQL returned an empty result set (i.e. zero rows)
我想将SUM(TOTAL)
和SUM(5STAR)
(如果是零行)的结果作为数字零(0)返回
全表结构:
- ID=主要
- 日期=唯一(日期)
- 贮藏
- 五星
- 4星
- 3STAR
- 2STAR
- 1STAR
- 总数
- FROM=唯一
SELECT
IFNULL(SUM(TOTAL), 0) AS total,
IFNULL(SUM(5STAR), 0) AS FiveStar,
STORE,
DATE
FROM `table`
WHERE DATE >= '2012-02-24'
GROUP BY TOTAL
试试看
我认为在PHP端处理空结果集(计算返回的行数)会更容易。如果要在数据库中处理它,应该创建一个存储过程
DELIMITER $$
CREATE PROCEDURE `mc`.`new_routine` (IN DT DATETIME)
BEGIN
IF EXISTS (SELECT 1 FROM `table` WHERE DATE >= @DT)
THEN
SELECT SUM(TOTAL) AS SumTotal, SUM(5STAR) AS Sum5Star, STORE, `DATE`
FROM `table`
WHERE DATE >= @DT
GROUP BY TOTAL;
ELSE
SELECT 0 AS SumTotal, 0 AS Sum5Star, NULL AS STORE, NULL AS `DATE`;
END IF;
END
您还可以尝试使用
COALESCE
添加的完整表结构。也许Unique会引起问题?我是新来的,所以不确定。所以如果结果集中没有行,你想返回一行,其中有0-s?我有点困惑。这是正确的彼得之吻。我用pHp显示,如果它不返回任何结果,我想显示0的总和。我同意@PeterKiss,你应该在pHp端的某个服务或门面层处理这个问题。这种逻辑很少属于数据库附近的逻辑。
DELIMITER $$
CREATE PROCEDURE `mc`.`new_routine` (IN DT DATETIME)
BEGIN
IF EXISTS (SELECT 1 FROM `table` WHERE DATE >= @DT)
THEN
SELECT SUM(TOTAL) AS SumTotal, SUM(5STAR) AS Sum5Star, STORE, `DATE`
FROM `table`
WHERE DATE >= @DT
GROUP BY TOTAL;
ELSE
SELECT 0 AS SumTotal, 0 AS Sum5Star, NULL AS STORE, NULL AS `DATE`;
END IF;
END