Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 为每个日期选择多个列_Mysql_Select - Fatal编程技术网

Mysql 为每个日期选择多个列

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

我有一个“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
...
重要的是,每天(即使没有任何事件发生)都会显示出来

我的代码如下所示:

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