mysql優化 - mysql 查7天數據,無數據的補0怎么寫呢?
問題描述
表里有個字段紀錄每次點擊的時間,查最近7天每日的數據,但其中可能有幾天沒數據,怎么把沒數據的天數設置為0,sql語句怎么寫
問題解答
回答1:據我所知,mysql只能說在null的時候返回其他值(比如SELECT IFNULL( (SELECT field1 FROM table WHERE id = 123) , 0);),但像題主這樣要補上本來不存在的數據挺難,可能別人會有方法。
我想說的是,就算sql能搞定這件事,也最好不要放sql,而是放在你的應用程序里。這種邏輯性的東西放程序里更好管控,也更方便理解
回答2:先構建一個最近7天的結果集,然后和查詢出的結果集做Left Join,如:
select a.click_date, ifnull(b.click_qty, 0)from ( select * from ( SELECT curdate() as click_date union all SELECT date_sub(curdate(), interval 1 day) as click_date union all SELECT date_sub(curdate(), interval 2 day) as click_date union all SELECT date_sub(curdate(), interval 3 day) as click_date union all SELECT date_sub(curdate(), interval 4 day) as click_date union all SELECT date_sub(curdate(), interval 5 day) as click_date union all SELECT date_sub(curdate(), interval 6 day) as click_date )) a left join ( select click_date, count(*) as click_qty from click_log_table group by click_date) b
