MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLのORDER BY句で値を並べ替える方法をわかりやすく解説

MySQLでレコードを並べ替えるには、ORDER BY句を使用します。この記事では、特定の値を先頭に表示しつつ、残りの値を昇順で並べ替える方法を、実際のSQL文と実行結果とともに順を追って解説します。

1. テーブルを作成する

まず、サンプル用のテーブルを作成しましょう。ここでは学生ID(StudentId)だけを持つシンプルなテーブルを定義します。

mysql> create table DemoTable
    (
    StudentId int
    );
Query OK, 0 rows affected (0.59 sec)

2. レコードを挿入する

次に、INSERTコマンドを使ってテーブルにデータを追加していきます。

mysql> insert into DemoTable values(100);
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable values(60);
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable values(70);
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable values(45);
Query OK, 1 row affected (0.24 sec)
mysql> insert into DemoTable values(55);
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable values(78);
Query OK, 1 row affected (0.14 sec)

3. テーブルの中身を確認する

SELECT文ですべてのレコードを表示してみましょう。

mysql> select *from DemoTable;

出力結果

+-----------+
| StudentId |
+-----------+
| 100       |
| 60        |
| 70        |
| 45        |
| 55        |
| 78        |
+-----------+
6 rows in set (0.00 sec)

この時点では、挿入した順番のままデータが表示されています。

4. ORDER BY句で並べ替えを行う

ここからが本題です。次のクエリでは、StudentId=70という条件式をORDER BY句の第一ソートキーに指定し、降順(DESC)で並べています。条件式は該当する行で「1」、それ以外で「0」を返すため、降順にすることで70の行が必ず先頭に来る仕組みです。

第二ソートキーにはStudentId asc(昇順)を指定しているため、残りのIDは小さい順に整列されます。

mysql> select *from DemoTable order by StudentId=70 desc,StudentId asc;

出力結果

+-----------+
| StudentId |
+-----------+
| 70        |
| 45        |
| 55        |
| 60        |
| 78        |
| 100       |
+-----------+
6 rows in set (0.00 sec)

ポイントまとめ

  • ORDER BY カラム名=値 DESC を使うと、その値に一致する行を最優先で先頭に表示できる。
  • カンマで区切って複数のソートキーを指定すると、第一キーが同じ場合に第二キーで並べ替えられる。
  • ASCは昇順(デフォルト)、DESCは降順を意味する。

このテクニックは、「特定のレコードだけ上部に固定表示したい」といった場面で非常に便利です。ぜひ活用してみてください。

  1. MySQLでソート順にGROUP_CONCAT()を使う方法|ORDER BY句との組み合わせ

    MySQLでソート順にGROUP_CONCAT()を呼び出す方法MySQLでレコードを指定した順序どおりに連結したい場合には、GROUP_CONCAT()関数にORDER BY句を組み合わせます。ここでは、学生の名前を学籍番号(StudentId)の昇順に連結する具体例を通じて、その使い方を解説します。サンプルテーブルの作成まず、以下のコマンドでテーブルを作成します。mysql> create table DemoTable1588 -> ( -> StudentId int, -> StudentFirstName varchar(20), -

  2. MySQLで特定の値だけを検索結果の最後に並び替える方法

    MySQLで特定の値を最後に並び替える方法 データベースを扱っていると、「不明」や「未設定」を意味する特定の値だけを、検索結果の一番最後に表示したいケースがあります。MySQLでは、ORDER BY句に比較式を組み合わせることで、このような並べ替えを簡単に実現できます。ここでは、テーブル作成から動作確認まで、サンプルコードとともに手順を解説します。 ステップ1:サンプルテーブルを作成する まず、氏名データを格納するためのテーブルを作成します。 mysql> create table demo57-> (-> id int not null auto_increment pr