PHP / MySQL查询:根据2个冲突条件显示结果

时间:2013-01-19 06:05:56

标签: php mysql sql

我要做的是:在时间轴中显示更新。

结果应显示 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";

我不确定如何正确查询。非常感谢一些指导,谢谢!

2 个答案:

答案 0 :(得分:3)

试试这个::

SELECT * FROM updates ORDER BY `year` ASC, `month` ASC

答案 1 :(得分:1)

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

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

-OR -

通常,日期信息存储在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')