如何编写mysql查询以从当月开始按月对数据进行排序

时间:2017-08-03 06:38:22

标签: php mysql sql laravel

我有一个表格,其中一列名为' created_at'。现在我希望按月分组所有记录,并从当月开始按月分组。

这是我到目前为止所写的MySQL查询:

SELECT count(id),MONTH(created_at) as month 
FROM `perks` 
GROUP BY created_at 
ORDER BY MONTH(created_at)

并且输出是: out put

我需要一个月8月(8),因为它是当前月份,然后是9,10,11,12,1,2 ......等等。

任何好友都可以帮忙解决这个问题吗?

2 个答案:

答案 0 :(得分:1)

正如jaymin所说,你需要按月分组,而不是时间

GROUP BY MONTH(created_at)

此外,如果之前有时需要排除,请使用where子句:

WHERE created_at > current_date()

如果您的数据包含明年的日期,您可能需要group by year(created_at), month(created_at)并按此顺序排序,除非您不关心明年8月将会推迟到今年8月等等。

如果打算将所有内容整合在一起,并且从当月开始整整一个月,您需要:

ORDER BY CASE WHEN MONTH(created_at) >= MONTH(current_date()) THEN 1 ELSE 2, MONTH(created_at)

答案 1 :(得分:0)

您可以使用

GROUP BY MONTH(CURRENT_DATE())