MySQLではORDER BY句でフィールドを指定することで、テーブル内の並びかえを行うことができます。
ここではMySQLのORDER BY句を使って、データを並び替える方法を紹介します。
WHERE句とLIKE演算子のデータ抽出方法を理解しておくとスムーズです!
-
MySQLのWHEREとLIKE演算子でデータ検索する方法
MySQLでWHEREとLIKE演算子を使って、特定のキーワードを含むレコードを検索します。 補足 前回のMySQLでW ...
続きを見る
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を降順に並び替え
SELECT * FROM mytable ORDER BY id DESC
idの番号が降順に並び替えできました。
2. テキストを並び替える場合
次にテキストのフィールド名を並び替えてみます。
フィールド名textを昇順に並び替え
SELECT * FROM mytable ORDER BY TEXT ASC
textのデータが昇順に並びました。
フィールド名textを降順に並び替え
SELECT * FROM mytable ORDER BY TEXT DESC
textのデータが降順に並びました。(漢字の扱いについては別途触れます)
3. 値段を並び替える場合
次は、値段となるpriceの箇所を並び替えてみます。
フィールド名priceを昇順に並び替え
SELECT * FROM mytable ORDER BY price ASC
priceの値が昇順に並び替えられました。
フィールド名priceを降順に並び替え
SELECT * FROM mytable ORDER BY price DESC
priceの値が降順に並び替えられました。
【重要】テキストを並び替えるときの注意点
テキストを並び替える際の注意点として、コンピューターは
- ひらがな
- カタカナ
- 漢字
上記の並び替えを正しく行うことはできません。(ひらがな・カタカナ・漢字の区別ができないため)
たとえば以下テーブルの、
フィールド「TEXT2」を昇順にするとしましょう。
SELECT * FROM mytable ORDER BY TEXT2 ASC
すると、読みがなに対して並びの順がバラバラなんすよね。
漢字をORDER BY句で並び替える方法
なので、テーブル内に漢字が含まれる場合は、
- 別にカラムを作成
- 読みがなを入力
といったことを行って
そのカラムの並び替えを行ってあげると良いっす。
SELECT * FROM mytable ORDER BY YOMI ASC
あとは「ひらがな」だったら「ひらがなだけの文字列」、カタカナだったら「カタカナだけの文字列」といった感じで統一すれば後からの管理が捗りそうです。
ランキングなどの管理を行うときは、CVなどの獲得数などで並び替えの管理を行うのがオススメ。
まとめ
MySQLでORDER BY句を使ったテーブルの並び替えの方法でした。
漢字の並び替えについては、rubyなどで読みがなを取得してからソートさせる等、ちょっと工夫が必要ですね。
次の記事:【MySQL】DATETIME型でデータの更新日を自動表示する手順(phpMyAdmin)
-
【MySQL】DATETIME型でデータの更新日を自動表示する手順(phpMyAdmin)
MySQLのDATETIME型を使うことで、データの更新日を自動で表せる!のでメモっす。 補足 MySQLでORDER ...
続きを見る
関連記事:MySQLのWHEREとLIKE演算子でデータ検索する方法
関連記事:MySQLでWHERE句使ってデータ抽出する手順
関連記事:MySQLでカラム追加・削除をする方法(phpMyAdmin)