【MySQL】複数カラムのデータを重複しないように出力する

今回は月別アーカイブで利用する用に出力したい為、
yearとmonthを合わせた状態で重複しないようにデータを出力したい。

テーブル:t_calendar
| year| month| ….|
|—–|——|—–|
| 2011| 11| ….|
| 2011| 10| ….|
| 2012| 2| ….|
| 2012| 1| ….|
| 2011| 10| ….|
| 2011| 10| ….|
| 2011| 11| ….|
| 2011| 12| ….|
| 2012| 1| ….|
| 2012| 2| ….|

こういった場合はyearとmonthをまずGROUP BYでグルーピングしてあげてからSELECTで出力する。

SELECT year, month FROM t_calendar GROUP BY year, month;

【出力結果】
| year| month| ….|
|—–|——|—–|
| 2011| 10| ….|
| 2011| 11| ….|
| 2011| 12| ….|
| 2012| 1| ….|
| 2012| 2| ….|

古い順に並んでいるデータを新しい順に並び替えて出力する。

SELECT year, month FROM t_calendar GROUP BY year DESC, month DESC;

【出力結果】
| year| month| ….|
|—–|——|—–|
| 2012| 2| ….|
| 2012| 1| ….|
| 2011| 12| ….|
| 2011| 11| ….|
| 2011| 10| ….|

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>