0

我想做的是:在时间线上显示更新。

结果应该显示从1 月到 12 月的更新,但同时根据它们的年份列出这些月份。

一个视觉布局示例是:

  • 2011 年 1 月
  • 2011 年 2 月
  • 2011 年 5 月
  • 2011 年 6 月
  • 2011 年 7 月
  • 2011 年 9 月
  • 2011 年 11 月
  • 2011 年 12 月
  • 2012 年 1 月
  • 2012 年 2 月

等等等等...

如您所见,它回到了 2011 年结束时的 1 月。
我的查询遇到的问题是......

我只能以这种方式订购我的结果:

  • 2011 年 1 月
  • 2012 年 1 月
  • 2011 年 2 月
  • 2012 年 2 月
  • 2011 年 5 月
  • 2011 年 6 月
  • 2011 年 7 月
  • 2011 年 9 月
  • 2011 年 11 月
  • 2011 年 12 月
$sql="SELECT * FROM (SELECT * FROM updates ORDER BY year ASC) AS the_id ORDER BY month ASC";

我不确定如何正确查询。一些指导将不胜感激,谢谢!

4

2 回答 2

3

尝试这个::

SELECT * FROM updates ORDER BY `year` ASC, `month` ASC
于 2013-01-19T06:08:28.140 回答
1

您可以在 ORDER BY 子句中指定多个表达式,如下所示:

... ORDER BY `year`, `month` 

-或者-

通常,日期信息存储在 DATE 或 DATETIME 列中。在这种情况下,您可以按日期列排序:

SELECT DATE_FORMAT(datecol,'%M %Y') AS month_year
  FROM ...
 ORDER BY datecol  

或者,您可以派生一个表达式,该表达式具有您可以按以下顺序排序的值:

... ORDER BY STR_TO_DATE(CONCAT(`year`,' ',`month_name`),'%Y %M')
于 2013-01-19T06:09:07.350 回答