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