Mysql 为每个日期选择多个列
我有一个“Messages”表,它以字符串的形式保存时间戳和事件。我想展示过去30天里发生了多少不同的事件 因此,输出应该如下所示:Mysql 为每个日期选择多个列,mysql,select,Mysql,Select,我有一个“Messages”表,它以字符串的形式保存时间戳和事件。我想展示过去30天里发生了多少不同的事件 因此,输出应该如下所示: date event_1 event_2 ... 2017-08-01 4 0 2017-08-02 0 0 2017-08-03 5 3 2017-08-04 0 2
date event_1 event_2
...
2017-08-01 4 0
2017-08-02 0 0
2017-08-03 5 3
2017-08-04 0 2
...
重要的是,每天(即使没有任何事件发生)都会显示出来
我的代码如下所示:
SELECT distinct(DATE(MESSAGE.DATEFIELD)) as 'date',
IF(MESSAGE.EVENT = 'event_1', COUNT(MESSAGE.ID), 0) AS 'event 1',
IF(MESSAGE.EVENT = 'event_2', COUNT(MESSAGE.ID), 0) AS 'event 2'
FROM MESSAGE
WHERE DATE(MESSAGE.DATEFIELD) >= DATE(NOW()) - INTERVAL 30 DAY
GROUP BY date, MESSAGE.EVENT
这是行不通的。它会为每个事件添加多天。你能指出我的错误吗?谢谢 工作完美!谢谢
select DATEFIELD,
count(case when EVENT = 'event_1' then 1 end) AS 'event 1',
count(case when EVENT = 'event_2' then 1 end) AS 'event 2'
from message
WHERE DATE(MESSAGE.DATEFIELD) >= DATE(NOW()) - INTERVAL 30 DAY
group by DATEFIELD