mysql选择每个月的记录数
我需要在mysql中创建一个查询,返回12行(每个月一行)来选择月份名称和给定月份的记录数。我有两张桌子,一张月桌和一张活动桌。事件tbl中的每条记录都有一个日期时间列和一个公司id列 我目前正在做类似的事情(注意,我还没有WHERE company\u id条款): 这将返回与我期望的类似的结果(选择12行,其中包含当月的事件计数,如果没有,则返回零): 但是,它会返回所有记录,而不考虑公司。我需要确保查询已被筛选,因此,我添加了where子句:mysql选择每个月的记录数,mysql,Mysql,我需要在mysql中创建一个查询,返回12行(每个月一行)来选择月份名称和给定月份的记录数。我有两张桌子,一张月桌和一张活动桌。事件tbl中的每条记录都有一个日期时间列和一个公司id列 我目前正在做类似的事情(注意,我还没有WHERE company\u id条款): 这将返回与我期望的类似的结果(选择12行,其中包含当月的事件计数,如果没有,则返回零): 但是,它会返回所有记录,而不考虑公司。我需要确保查询已被筛选,因此,我添加了where子句: SELECT months_tbl.month
SELECT months_tbl.month, COUNT( events_tbl.appt_id ) cnt
FROM months_tbl
LEFT JOIN events_tbl ON months_tbl.month_id = MONTH( events_tbl.appt_date_time )
WHERE events_tbl.company_id = 1
GROUP BY months_tbl.month
ORDER BY months_tbl.month_id ASC;
当我添加where子句时,我的结果变成:
**month** **cnt**
August 88
September 99
October 120
December 9
知道为什么我在添加where子句时会丢失所有其他月份的记录吗,即使我使用的是左连接 您使用的是
左连接
,但在where语句中,您将其设置为“正常”连接
试着这样写:
SELECT months_tbl.month, COUNT( events_tbl.appt_id ) cnt
FROM months_tbl
LEFT JOIN events_tbl ON (months_tbl.month_id = MONTH(events_tbl.appt_date_time)
AND events_tbl.company_id = 1
)
GROUP BY months_tbl.month
ORDER BY months_tbl.month_id ASC;
注意和events\u tbl.company\u id=1
在左连接中
**month** **cnt**
August 88
September 99
October 120
December 9
SELECT months_tbl.month, COUNT( events_tbl.appt_id ) cnt
FROM months_tbl
LEFT JOIN events_tbl ON (months_tbl.month_id = MONTH(events_tbl.appt_date_time)
AND events_tbl.company_id = 1
)
GROUP BY months_tbl.month
ORDER BY months_tbl.month_id ASC;