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

MySQLで複数の列を基準に行を並べ替える方法(ORDER BY句の使い方)

MySQLでは、ORDER BY句に複数の列名をカンマ区切りで指定することで、行を複数の列を基準に並べ替えることができます。最初に指定した列が優先され、その列の値が同じ場合にのみ、次に指定した列の順序が適用されます。

ここでは、実際にテーブルを作成して、複数列でのソート動作を確認してみましょう。

1. テーブルの作成

まず、以下のコマンドでサンプルテーブル「DemoTable」を作成します。

mysql> create table DemoTable
    -> (
    -> FirstName varchar(20),
    -> LastName varchar(20)
    -> );
Query OK, 0 rows affected (1.44 sec)

2. レコードの挿入

次に、INSERTコマンドを使ってテーブルにレコードを挿入します。

mysql> insert into DemoTable values('John','Smith');
Query OK, 1 row affected (0.35 sec)

mysql> insert into DemoTable values('Chris','Brown');
Query OK, 1 row affected (0.37 sec)

mysql> insert into DemoTable values('Carol','Taylor');
Query OK, 1 row affected (0.15 sec)

mysql> insert into DemoTable values('David','Miller');
Query OK, 1 row affected (0.24 sec)

3. 挿入したレコードの確認

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

mysql> select *from DemoTable;

このクエリを実行すると、次のような出力が得られます。

+-----------+----------+
| FirstName | LastName |
+-----------+----------+
| John      | Smith    |
| Chris     | Brown    |
| Carol     | Taylor   |
| David     | Miller   |
+-----------+----------+
4 rows in set (0.00 sec)

挿入した順番のまま表示されていることがわかります。

4. 複数の列で並べ替えるクエリ

MySQLの行を複数の列で並べ替えるには、以下のようにORDER BY句に「FirstName」と「LastName」を指定します。

mysql> select *from DemoTable order by FirstName,LastName;

実行結果

このクエリを実行すると、次のような出力が得られます。

+-----------+----------+
| FirstName | LastName |
+-----------+----------+
| Carol     | Taylor   |
| Chris     | Brown    |
| David     | Miller   |
| John      | Smith    |
+-----------+----------+
4 rows in set (0.24 sec)

結果を見ると、まず「FirstName(名)」のアルファベット順に並べ替えられていることがわかります。もしFirstNameが同じ値の行が複数存在する場合は、その中でさらに「LastName(姓)」の順に並べ替えられます。

補足:昇順・降順の指定について

デフォルトでは昇順(ASC)で並べ替えられますが、降順にしたい場合は各列に対してDESCを指定できます。また、列ごとに異なる順序を設定することも可能です。

-- FirstNameは昇順、LastNameは降順で並べ替える例
mysql> select *from DemoTable order by FirstName ASC, LastName DESC;

このように、ORDER BY句を活用することで、柔軟なデータの並べ替えが可能になります。

  1. MySQLで複数の列を並べ替える方法|ORDER BYが期待どおりに動作しないときの解決策

    MySQLでは、ORDER BY句に複数の列をカンマ区切りで指定することで、複数条件による並べ替えが可能です。各列ごとに昇順(ASC)や降順(DESC)を個別に設定できるため、柔軟なソート処理を実現できます。複数列で並べ替える基本構文以下が、複数の列を指定して並べ替える際の基本的な構文です。SELECT * FROM テーブル名 ORDER BY 列名1 DESC, 列名2, 列名3;この構文では、まず「列名1」を降順(DESC)で並べ替え、同じ値が存在する場合は次に「列名2」で昇順(デフォルト)、さらに「列名3」で並べ替えられます。並び順の優先度は、記述した列の左から右へと適用される点に注意

  2. MySQLで複数の列(カラム)を検索する方法をわかりやすく解説

    この記事では、MySQLで複数の列(カラム)を同時に検索する方法について解説します。前提条件: ここでは、あらかじめ「DBNAME」という名前のデータベースと、「tableName」という名前のテーブルが作成されているものとします。AND演算子とOR演算子を使い分ける複数の列を検索する際には、AND 演算子と OR 演算子を使用します。どちらを使うかは、検索結果として何を取得したいかによって決まります。AND: すべての条件に一致するレコードのみを返すOR: いずれかの条件に一致するレコードを返すそれでは、具体的な例を見ていきましょう。例1:AND演算子を使用する場合SELECT colNam