広告

【MySQL】ORDER BY句でデータの並び替えを行う方法

2019年9月4日

MySQLではORDER BY句でフィールドを指定することで、テーブル内の並びかえを行うことができます

ORDER BY句でidが昇順になった

ここではMySQLのORDER BY句を使って、データを並び替える方法を紹介します。

MySQL・ORDER BY句を使ってデータの並び替えを行う手順

基本的な使い方は以下のとおりです。

SELECT * FROM テーブル名 ORDER BY フィールド名 ASC

特にSQLで昇順降順を指定する場合は、以下のように指定します。

  • ASC・・・Ascending(昇順)
  • DESC・・・Descending(降順)

以上を踏まえ、以下テーブル(mutable)を使って並び替えを行ってみます。

SELECT * FROM mytable

データ抽出する対象のテーブル

MySQLにデータベースを作成する方法のメモ(phpMyAdmin)

1. 主キーを番号順に並び替える場合

テーブルの主キーとなる、フィールド名の並びを変更してみます。

フィールド名idを指定して昇順に並び替え

SELECT * FROM mytable ORDER BY id ASC

idの番号が昇順に並び替えできました

フィールド名idを指定して昇順に並び替え

フィールド名idを降順に並び替え

SELECT * FROM mytable ORDER BY id DESC

idの番号が降順に並び替えできました

フィールド名idを降順に並び替え

2. テキストを並び替える場合

次にテキストのフィールド名を並び替えてみます。

フィールド名textを昇順に並び替え

SELECT * FROM mytable ORDER BY TEXT ASC

textのデータが昇順に並びました。

フィールド名textを昇順に並び替えた結果

フィールド名textを降順に並び替え

SELECT * FROM mytable ORDER BY TEXT DESC

textのデータが降順に並びました。(漢字の扱いについては別途触れます)

フィールド名textを降順に並び替えた結果

3. 値段を並び替える場合

次は、値段となるpriceの箇所を並び替えてみます。

フィールド名priceを昇順に並び替え

SELECT * FROM mytable ORDER BY price ASC

priceの値が昇順に並び替えられました。

フィールド名priceを昇順に並び替えた結果

フィールド名priceを降順に並び替え

SELECT * FROM mytable ORDER BY price DESC

priceの値が降順に並び替えられました。

フィールド名priceを降順に並び替えした結果

【重要】テキストを並び替えるときの注意点

テキストを並び替える際の注意点として、コンピューターは

  1. ひらがな
  2. カタカナ
  3. 漢字

上記の並び替えを正しく行うことはできません。(ひらがな・カタカナ・漢字の区別ができないため)

たとえば以下テーブルの、

並び替えの対象となるテーブル

フィールド「TEXT2」を昇順にするとしましょう。

SELECT * FROM mytable ORDER BY TEXT2 ASC

すると、読みがなに対して並びの順がバラバラなんすよね。

ORDER BYは漢字だと区別がつかない

漢字をORDER BY句で並び替える方法

なので、テーブル内に漢字が含まれる場合は、

  1. 別にカラムを作成
  2. 読みがなを入力

といったことを行って

読みがなカラムを作成した画像

そのカラムの並び替えを行ってあげると良いっす。

SELECT * FROM mytable ORDER BY YOMI ASC

漢字のよみがなで並び替わった画像

あとは「ひらがな」だったら「ひらがなだけの文字列」、カタカナだったら「カタカナだけの文字列」といった感じで統一すれば後からの管理が捗りそうです。

補足
ランキングなどの管理を行うときは、CVなどの獲得数などで並び替えの管理を行うのがオススメ。

まとめ

MySQLでORDER BY句を使ったテーブルの並び替えの方法でした。

漢字の並び替えについては、rubyなどで読みがなを取得してからソートさせる等、ちょっと工夫が必要ですね。

OYAKUN
OYAKUN
次回はレコード操作したら日時更新されるDATETIME型の設定方法について記します!

次の記事:【MySQL】DATETIME型でデータの更新日を自動表示する手順(phpMyAdmin)

次回記事
mysql-datetime
【MySQL】DATETIME型でデータの更新日を自動表示する手順(phpMyAdmin)

MySQLのDATETIME型を使うことで、データの更新日を自動で表せる!のでメモっす。 補足 MySQLでORDER ...

続きを見る

関連記事:MySQLのWHEREとLIKE演算子でデータ検索する方法
関連記事:MySQLでWHERE句使ってデータ抽出する手順
関連記事:MySQLでカラム追加・削除をする方法(phpMyAdmin)