このチュートリアルでは MySQL ORDER BY 句とその ASC および DESC オプションでの使用方法について説明します。 この MySQL ステートメントは、簡単な例を使って説明します。 ORDER BY 句の構文
2.ORDER BY W/O ASC または DESC
3.ORDER BY DESC
4.ORDER BY 相対位置
5.ORDER BY DESC
5.ORDER BY 相対位置
6.ORDER BY DESC
6. ORDER BY Two Fields ASC & DESC
それでは、各セクションを一つずつ見ていきましょう。
MySQL ORDER BY Clause
MySQL SELECTコマンドはデフォルトでソートされた結果セットを返しません。 したがって、出力をソートするには、SELECT クエリで ORDER BY 句を追加する必要があります。 ORDER BY 句を使用することにより、以下を実現できます。
- 単一/複数のフィールドによるレコードのソートを実行する
- 昇順 (ASC) または降順 (DESC) で個別の列によって行をソートする。
構文
# MySQL ORDER BY ClauseSELECT field1, field2,...FROM target_tableORDER BY field1 , field2 ,...
ORDER BY 句は、デフォルトで昇順で並べ替えを実行します。 ASCという用語は、DESCが降順を意味するのに対し、増加の頭文字をとったものである。 DESC については、SELECT クエリで言及する必要があります。
MySQL では ORDER BY で式を指定することも可能であることに注意してください。 また、ASC と DESC のオプションは、このステートメントのオプションです。
練習用のサンプル演習をいくつか紹介します。
MySQL ORDER BY 句の例
MySQL SELECT クエリと ORDER BY 句を使用する方法をチェックしましょう。
asc/desc オプションを使用しない order by の使用
実演するために、まず Sample という名前のテーブルを作成し、いくつかのテスト データを入力してみましょう。
SELECT *FROM Sample;
その出力は次のとおりです。
さて、「vendor_name」ファイルに対してORDER BY句を実行します。
SELECT *FROM SampleORDER BY vendor_name;
以下の出力を示す結果が得られます。
上記の結果セットから、デフォルトの昇順でソートが行われたと評価することができます。
SELECT *FROM SampleORDER BY vendor_name DESC;
ここに降順で並べ替える MySQL ステートメントがあります:
Sort by field on a relative position
相対位置のフィールドで並べ替えるために MySQL ORDER BY 句を使用することが可能です。
SELECTクエリでカラム名を指定すると、最初のフィールドは1の位置にあり、2番目は2の位置にあるというように。 さらに、例を使ってこの事実を検証することができます。
ここに、フィールドを表示し、相対的な位置でソートするSELECT文があります。
SELECT # pos_1 pos_2 pos_3 pos_4 sample_id, sample_name, vendor_name, sample_sizeFROM SampleORDER BY 4 DESC;
以下は、上記のコマンドを実行した後に得られる結果セットです。
4番目の列に対応する sample_size フィールドで MySQL がソートしていることがわかります。 このような場合、MySQL は最初のフィールドをプライマリとして、後のフィールドをセカンダリとして扱います。 したがって、最初にプライマリをソートし、次にセカンダリをソートします。
したがって、この例では、2 つの列、ASC として 1 つのフィールド、および DESC として別のフィールドで ORDER BY を実演します。
ここで、同じベンダー名でサンプルサイズが異なるいくつかの行があります。 そして、ここで vendor_name (主) および sample_size (副) フィールドに基づいてソートします。
SELECT sample_id, sample_name, vendor_name, sample_sizeFROM SampleORDER BY vendor_name ASC, sample_size DESC;
この MySQL 文は、次の結果を生成します:
主フィールドのすべての値が昇順でソートされていることがわかります。 そして、2 番目のフィールドでも (DESC で) ソートが行われたことが出力からわかります。
さて、ベンダー名のみでソートした場合の結果を調べてみましょう。
SELECT sample_id, sample_name, vendor_name, sample_sizeFROM SampleORDER BY vendor_name ASC;
このコマンドは次のようになります。
上記の結果から、Google と Twitter に属する行はサンプル サイズでソートされていないことがわかります。 しかし、自信をつけるために例題でもっと練習してもよいでしょう。
また、SQL をゼロから深く学ぶには、ステップバイステップの MySQL チュートリアルを読んでください。