Mysql 时间窗口中每月计数(驱动器)的结果不正确

Mysql 时间窗口中每月计数(驱动器)的结果不正确,mysql,Mysql,您好,我有以下查询来获取12个月前每个月发生的驱动器。但是结果不正确。例如,在我的测试数据库中,2月份只有3个驱动器,但在我的结果集中显示了9个驱动器 SELECT mlist.m, count(data.month) as drvs FROM users, ( SELECT 'Jan' AS m UNION SELECT 'Feb' AS m

您好,我有以下查询来获取12个月前每个月发生的驱动器。但是结果不正确。例如,在我的测试数据库中,2月份只有3个驱动器,但在我的结果集中显示了9个驱动器

SELECT mlist.m, count(data.month) as drvs
                     FROM users, (
                           SELECT 'Jan' AS m
                           UNION SELECT 'Feb' AS m
                           UNION SELECT 'Mar' AS m
                           UNION SELECT 'Apr' AS m
                           UNION SELECT 'May' AS m
                           UNION SELECT 'Jun' AS m
                           UNION SELECT 'Jul' AS m
                           UNION SELECT 'Aug' AS m
                           UNION SELECT 'Sep' AS m
                           UNION SELECT 'Oct' AS m
                           UNION SELECT 'Nov' AS m
                           UNION SELECT 'Dec' AS m
                          ) AS mlist LEFT JOIN (SELECT DATE_FORMAT(drives.timestamp, '%b') AS month,
                                 drives.timestamp,
                                 CONCAT(drivers.name, ' ', drivers.surname) as driver,
                                 drivers.id as driver_id
                                 FROM drives, drivers WHERE drives.user = '146'
                                 AND drives.timestamp > DATE_SUB(now(), INTERVAL 12 MONTH)) data
                ON mlist.m = data.month GROUP BY mlist.m
结果:

“4月”、“3日” “8月”、“3日” “12月”、“6日” “2月”、“9日” “1月”、“3日” “7月”、“3日” “六月”、“三” “3月”、“3日” “五月”、“三日” “11月”、“3日” “10月”、“6日” “九月”、“三日”

这起作用:

SELECT  mlist.m, count(data.drive_id) AS drvs
                     FROM users, (
                           SELECT 'Jan' AS m
                           UNION SELECT 'Feb' AS m
                           UNION SELECT 'Mar' AS m
                           UNION SELECT 'Apr' AS m
                           UNION SELECT 'May' AS m
                           UNION SELECT 'Jun' AS m
                           UNION SELECT 'Jul' AS m
                           UNION SELECT 'Aug' AS m
                           UNION SELECT 'Sep' AS m
                           UNION SELECT 'Oct' AS m
                           UNION SELECT 'Nov' AS m
                           UNION SELECT 'Dec' AS m
                          ) AS mlist LEFT JOIN (SELECT DATE_FORMAT(drives.timestamp, '%b') AS month,
                                 drives.id AS drive_id, 
                                 drives.timestamp
                                 FROM drives WHERE drives.user = '146'
                                 AND drives.timestamp > DATE_SUB(now(), INTERVAL 12 MONTH)) data
                ON mlist.m = data.month GROUP BY mlist.m