Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.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
Php 如何编写mysql查询,从当月开始按月对数据进行排序_Php_Mysql_Sql_Laravel - Fatal编程技术网

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

Php 如何编写mysql查询,从当月开始按月对数据进行排序,php,mysql,sql,laravel,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) 结果是: 我需要8月(8)第一个月,因为它是当前月份,然后是9,10,11,12,1,2。。。等等 任何好友都可以帮助解决此问题吗?您可以

我有一个表,其中一列名为“created_at”。现在,我想从当前月份开始按月分组和按月订购所有记录

以下是我到目前为止编写的MySQL查询:

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

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

任何好友都可以帮助解决此问题吗?

您可以使用

GROUP BY MONTH(CURRENT_DATE())

正如jaymin指出的,你需要按月分组,而不是按时间分组

GROUP BY MONTH(created_at)
此外,如果之前有需要排除的时间,请使用where子句:

WHERE created_at > current_date()
如果您的数据包括明年的日期,您可能需要
按年份(创建时间)、月份(创建时间)
分组,并按此进行排序,除非您不在乎明年的8月会滚动到今年的8月等等

如果您的目的是将所有内容汇总在一起,并让月份从当前月份开始循环,那么您需要:

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

请你的代码,以便我们可以帮助你。超难写没有任何数据模式的查询。一个命名列是不够的。没有表格,没有数据。。。没有疑问。另外:当您编辑问题以包含此类详细信息(包括示例数据和预期输出)时,还应包括您尝试过的内容和遇到的困难。@jayminob,谢谢。这是我的sql查询。选择count(id),MONTH(created_at)as MONTH FROM
perks
GROUP BY created_at ORDER BY MONTH(created_at)@davidmakogoon你目前生活中的一些压力?最近几次,你对质量较低的noob问题发表评论,你遇到的问题有点突然。@CaiusJard,让我用一个简单的例子来解释。假设我有一家有桌子的餐厅,并且希望每月显示所有访问过的客户(也可能是去年)。另外,月份应该从当前月份开始。@CaiusJard,您的解决方案将不起作用。按月分组(CURRENT_DATE())将只返回当月的数据,其中DATE>now将返回日期大于今天的数据。我还需要旧数据。确切地说:)同意