Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/270.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.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_Sorting - Fatal编程技术网

Php MYSQL返回无序的日期

Php MYSQL返回无序的日期,php,mysql,sorting,Php,Mysql,Sorting,我按月份和年份列出了所有的新闻文章,以及这个月发生了多少篇文章 然而,我注意到,在新的一年里,它只是按月份排序,而不是按月份排序 这是我的SQL $archive1_sql = "SELECT YEAR(`ndate`) AS 'year', MONTH(`ndate`) AS 'month', COUNT(`nid`) AS 'count' FROM `weaponsnews` GROUP BY YEAR(`ndate`), MONTH(`ndate`) DESC"; 它回来了 Decem

我按月份和年份列出了所有的新闻文章,以及这个月发生了多少篇文章

然而,我注意到,在新的一年里,它只是按月份排序,而不是按月份排序

这是我的SQL

$archive1_sql = "SELECT YEAR(`ndate`) AS 'year', MONTH(`ndate`) AS 'month', COUNT(`nid`) AS 'count'  FROM `weaponsnews` GROUP BY YEAR(`ndate`), MONTH(`ndate`) DESC";
它回来了

December 2012 (1)
November 2012 (11)
October 2012 (6)
September 2012 (8)
August 2012 (16)
July 2012 (8)
June 2012 (6)
May 2012 (12)
April 2012 (4)
March 2012 (2)
February 2012 (4)
January 2013 (1)
我要它做的就是这样

January 2013 (1)
December 2012 (1)
November 2012 (11)
October 2012 (6)
September 2012 (8)
August 2012 (16)
July 2012 (8)
June 2012 (6)
May 2012 (12)
April 2012 (4)
March 2012 (2)
February 2012 (4)

如何操作?

分组方式更改为:

GROUP BY YEAR(`ndate`) DESC, 
         MONTH(`ndate`) DESC
如果没有按
排序,MySQL有一个(非标准SQL)功能,它根据按排序的分组对结果排序。它还允许在此处输入
ASC
DESC
关键字

从MySQL文档

  • 如果使用
    分组依据
    ,则输出行将根据
    分组依据
    列进行排序,就像对相同列有一个
    排序依据一样。为避免
    分组依据
    产生的排序开销,请添加
    按空排序

    SELECT a, COUNT(b) FROM test_table GROUP BY a ORDER BY NULL;
    
  • MySQL扩展了
    GROUP BY
    子句,这样您也可以在子句中命名的列之后指定
    ASC
    DESC

    SELECT a, COUNT(b) FROM test_table GROUP BY a DESC;
    

将分组依据更改为:

GROUP BY YEAR(`ndate`) DESC, 
         MONTH(`ndate`) DESC
如果没有按
排序,MySQL有一个(非标准SQL)功能,它根据按排序的分组对结果排序。它还允许在此处输入
ASC
DESC
关键字

从MySQL文档

  • 如果使用
    分组依据
    ,则输出行将根据
    分组依据
    列进行排序,就像对相同列有一个
    排序依据一样。为避免
    分组依据
    产生的排序开销,请添加
    按空排序

    SELECT a, COUNT(b) FROM test_table GROUP BY a ORDER BY NULL;
    
  • MySQL扩展了
    GROUP BY
    子句,这样您也可以在子句中命名的列之后指定
    ASC
    DESC

    SELECT a, COUNT(b) FROM test_table GROUP BY a DESC;
    
将DESC也添加到年份中

SELECT
  YEAR(`ndate`) AS 'year',
  MONTH(`ndate`) AS 'month',
  COUNT(`nid`) AS 'count'
FROM `weaponsnews`
GROUP BY YEAR(`ndate`) , MONTH(`ndate`)
ORDER BY YEAR(`ndate`) DESC , MONTH(`ndate`) DESC
将DESC也添加到年份中

SELECT
  YEAR(`ndate`) AS 'year',
  MONTH(`ndate`) AS 'month',
  COUNT(`nid`) AS 'count'
FROM `weaponsnews`
GROUP BY YEAR(`ndate`) , MONTH(`ndate`)
ORDER BY YEAR(`ndate`) DESC , MONTH(`ndate`) DESC
要按时间顺序(颠倒)获取记录,请使用“按数据描述顺序”:

然后,您可以根据需要进行分组(天、周……),无需更改“order by”语句。

若要按时间顺序(反向)获取记录,请使用“order by ndate DESC”:


然后,您可以根据需要进行分组(天、周……),无需更改“order by”语句。

您没有
order by
子句,因此您可以按照mysql决定的任何发送顺序取回数据。您没有
order by
子句,因此,您将以mysql决定的任何顺序返回数据。谢谢,两个答案都是正确的,我将给他答案,因为他先回答了,但谢谢,我不知道我可以使用DESC两次,但现在考虑到这一点,这是有意义的。谢谢,两个答案都是正确的,我将按照他先回答的方式给他答案,但谢谢,我不知道我可以使用DESC两次,但现在我想起来很有意义,如果在
WEEKDAY(ndate)
之前分组,那么
ORDER by ndate
应该如何表现?@ypercube:random:)如果您的分组符合某些时间顺序,这样就行了。如果你把周一和周二混在一起,mysql会在每组中随机选取一些记录并进行比较。现在,如果您按年、周和工作日分组,那么您将按时间顺序分组。如果您按
工作日(ndate)
分组,那么
按ndate排序应该如何行为?@ypercube:random:)如果您的组对应于某个时间顺序,这将起到作用。如果你把周一和周二混在一起,mysql会在每组中随机选取一些记录并进行比较。现在,如果你按年度、周和工作日分组,那么你会按时间顺序得到分组。