mysql group by date(day)如果在特定日期没有结果则不显示

时间:2014-02-22 04:16:54

标签: php mysql sql

这是我的查询

select sender, count(*) as Total, date_format(senttime, '%m - %Y - %d') as Sent_Date 
from sendmail sm 
left join subuser su 
   on (sm.sender = su.sub_user) 
where senttime <= NOW() 
  AND senttime >= DATE_SUB(senttime, INTERVAL 7 DAY) 
group by date_format(senttime, '%d'), sender

这是实际输出

enter image description here

它仅显示两个日期2122,但我需要7个日期,总计数为0。

我该怎么办呢。

1 个答案:

答案 0 :(得分:0)

如果没有发送时间,它不会满足您的where条件。

where senttime <= NOW() 
AND senttime >= DATE_SUB(senttime, INTERVAL 7 DAY) 

您需要为其添加or

where senttime IS NULL OR (senttime <= NOW() 
AND senttime >= DATE_SUB(senttime, INTERVAL 7 DAY))

您可能需要切换此

from sendmail sm 
left join subuser su 

from subuser su 
left join sendmail sm

假设sendmail仅在发送内容时具有值 - 您需要从您知道的那个中选择,然后离开加入您不确定的那个(或者执行不同类型的连接) )