MySQLのORDER BY句とは?基本的な使い方を実例付きで解説
MySQLのORDER BY句とは
MySQLのORDER BY句は、クエリの実行結果を特定の列の値に基づいて並べ替える(ソートする)ために使用します。ORDER BYキーワードの後には、並べ替えの基準となる列名を続けて記述する必要があります。
ここでは、例として「ratelist」というテーブルを「price」列を基準に並べ替えてみましょう。まず、テーブルの中身を確認します。
mysql> Select * from ratelist; +----+------+-------+ | Sr | Item | Price | +----+------+-------+ | 1 | A | 502 | | 2 | B | 630 | | 3 | C | 1005 | | 4 | h | 850 | | 5 | T | 250 | +----+------+-------+ 5 rows in set (0.05 sec)
ORDER BY句を使った並べ替えの方法
このテーブルをprice列を基準に並べ替えるには、次のようにORDER BY句を使用します。
mysql> Select * from ratelist ORDER BY Price; +----+------+-------+ | Sr | Item | Price | +----+------+-------+ | 5 | T | 250 | | 1 | A | 502 | | 2 | B | 630 | | 4 | h | 850 | | 3 | C | 1005 | +----+------+-------+ 5 rows in set (0.01 sec)
上記のクエリでは、price列の値を基準にテーブルが並べ替えられました。ORDER BY句で並べ替えの順序を明示的に指定しない場合、デフォルトの並び順である昇順(ASC)が適用されます。そのため、価格が小さいものから大きいものへと順に表示されています。
降順で並べ替えたい場合
逆に、値の大きいものから順に表示したい場合は、DESCキーワードを追加します。
mysql> Select * from ratelist ORDER BY Price DESC;
このように、ORDER BY句は「ASC(昇順)」と「DESC(降順)」を使い分けることで、柔軟にデータの並び順を制御できます。複数の列を組み合わせた並べ替えにも対応しており、データ分析やレポート作成の際に非常に便利な句です。
-
MySQLでIN句に指定した順序どおりに行を取得する方法:FIND_IN_SET()の活用
IN句の順序で行を取得するには?MySQLでは、IN句に指定した値の順序どおりに結果セットを取得したい場合、通常のクエリでは実現できません。そこで活躍するのが FIND_IN_SET() 関数です。この関数を ORDER BY 句と組み合わせることで、IN句で指定した値の並び順そのままに行をソートできます。基本構文SELECT yourVariableName.* FROM yourTableName yourVariableName WHERE yourVariableName.yourColumnName IN(value1,value2,...N) ORDER BY FIND_IN_SE
-
MySQLのORDER BYで「カラム名 * 1」と書く目的とは?文字列型の数値を正しくソートする方法
ORDER BY カラム名 * 1 の目的MySQLでは、ORDER BY句でカラム名に「* 1」を掛けることで、そのカラムの値を数値へ暗黙的に型変換させることができます。たとえば、VARCHAR型のカラムに「301」「23」「345」といった数値のような文字列が格納されている場合、通常のORDER BYでは文字列として辞書順(文字コード順)にソートされてしまいます。しかし「* 1」を付けることで値が数値として評価され、数値の大小順に正しくソートできるようになります。基本の構文は以下のとおりです。SELECT * FROM テーブル名ORDER BY カラム名 * 1;実際に動作を確認してみよ