1.數據庫中選擇任意一個有數據的表,例如我選擇的是 shopping_user 表
SELECT @cdate := DATE_ADD( @cdate, INTERVAL - 1 DAY ) `date`, 0 AS `sum` FROM ( SELECT @cdate := DATE_ADD( CURDATE( ), INTERVAL + 1 DAY ) FROM shopping_user ) t1 WHERE @cdate > '2017-08-03'
選擇一統計時間開始時間,我的開始時間選擇的是2017-08-03,結束時間默認是當前日期。
2.將自己要統計的數據,按我們自己的要求寫出來,當然此時,肯定顯示的都是有數據的記錄統計結果:
我這是查詢的shopping_hibitRecord 按照ADDTIME 統計的條數
SELECT DATE_FORMAT( ADDTIME, '%Y-%m-%d' ) AS `date`, COUNT( * ) AS 'sum' FROM `shopping_hibitRecord` WHERE shopping_hibitRecord.`ADDTIME` >= '2017-08-03' AND deleteStatus = FALSE AND TYPE = 0 GROUP BY DATE DESC
此時沒有記錄的時間,就沒有展示在結果中。
3.聯合查詢將沒有記錄的時間補0
SELECT `date`, MAX( `sum` ) AS `sum` FROM ( SELECT @cdate := DATE_ADD( @cdate, INTERVAL - 1 DAY ) `date`, 0 AS `sum` FROM ( SELECT @cdate := DATE_ADD( CURDATE( ), INTERVAL + 1 DAY ) FROM shopping_user ) t1 WHERE @cdate > '2017-08-03' UNION ALL SELECT DATE_FORMAT( ADDTIME, '%Y-%m-%d' ) AS `date`, COUNT( * ) AS 'sum' FROM `shopping_hibitRecord` WHERE shopping_hibitRecord.`ADDTIME` >= '2017-08-03' AND deleteStatus = FALSE AND TYPE = 0 GROUP BY DATE DESC ) _tmpAllTable GROUP BY `date` DESC
上面要求1、2 的記錄條數字段名字一樣,我選擇的都是 sum
結果就是沒有數據的時間補上數據0了
總結:當然還有別的方法,不過這個方法不用創建任何的存儲過程,是相對來說簡單一點的