MySQL: レコードを昇順・降順にソートして出力 – ORDER BY句

前回はUPDATE文とDELETE文を扱いました。今回は下記のレコードを含むテーブルに対して、SELECT文のORDER BY句を用いて任意のレコードをソートして出力する例を示します。

ランダムに生成した10レコード(ブックリスト)を使います。
まず、値段の安い順、すなわちpriceフィールドを昇順で出力するSQL文は下のようになります。

<SELECT文の前半(FROM, WHERE句など)>
ORDER BY <列名1> [, <列名2>, …]

ORDER BYの後ろにフィールド名を指定することで、そのフィールド基準にソートしたレコードを返します。デフォルトでは昇順(ascending)ソートでそれを明示的に示す場合は、ASCキーワードをフィールド名の後ろに付け足します。上の例では、最終行をORDER BY price ASC;しても結果は同じです。
対して、あるフィールドを降順(descending)にソートする場合はフィールド名の後ろにDESCキーワードを付け足します。以下の例で確認してみましょう。

確かに、降順、ここで例では値段の高い順にソートされていますね。

LIMIT句で表示行数を指定

さて、ここで使われているLIMIT句は出力する行数を指定することが出来ます。上の例では

LIMIT <表示行数>

より3行(値段の高い本ベスト3)を表示しています。LIMIT句には他にも、

LIMIT <表示開始インデックス>,<表示行数>

という書き方があり、以下のSQL文は上と同じ結果を出力します。ちなみにインデックスは0から数え始めます。

最後に、ORDER BY句では複数のフィールドを指定できますが、その際のソートの適応順序は指定した順(書いた順)になります。次の例で確認してみましょう。

上の例では、dateフィールドでソートして、その中で同じ値があった場合はauthorをソートして順序を決めています。うーん、このレコード集ではちょっと分かり難いですね。

リファレンス

コメント

  1. links for 2009-09-11 | ウェブル より:

    […] MySQL: レコードを昇順・降順にソートして出力 – ORDER BY句 – Yukun's Blog (tags: MySQL) […]

  2. mysql — Azucarala Blog より:

    […] レコードを昇順・降順にソートして出力 – ORDER BY句 […]