MySQL query to return number 'zero' if no results

前端 未结 3 1637
孤独总比滥情好
孤独总比滥情好 2021-01-18 20:13

When selecting a DATE and that date does not exist in my table it currently will return an empty result set. How can I be able to return the number zero for those empty res

相关标签:
3条回答
  • 2021-01-18 20:18

    I think it would be easier to handle the empty result set on the PHP side (count the returned rows). If you want to handle it in the database, you should create a stored procedure.

    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
    
    0 讨论(0)
  • 2021-01-18 20:32

    TRY

    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
    

    Reference

    0 讨论(0)
  • 2021-01-18 20:39

    Try COALESCE

    SELECT COALESCE(SUM(TOTAL),0), COALESCE(SUM(5STAR),0), STORE, DATE
    FROM `table` WHERE DATE >= '2012-02-24' GROUP BY TOTAL
    
    0 讨论(0)
提交回复
热议问题