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

次のように、ORDERBY句で複数の式を指定できます。

... 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 に答える