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

MySQLのORDER BY句で1つのクエリにより複数の列を並べ替える方法

MySQLではORDER BY句を使うことで、取得したレコードを任意の列の値に基づいて並べ替えることができます。1つのクエリで複数の列を並べ替えたい場合は、列名をカンマ(,)で区切って指定します。さらに、列ごとに昇順(ASC)や降順(DESC)を個別に設定することも可能です。

サンプルテーブルの作成

まず、以下のクエリでテーブルを作成します。

mysql> create table DemoTable
    -> (
    -> Id int,
    -> Value int
    -> );
Query OK, 0 rows affected (0.68 sec)

レコードの挿入

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

mysql> insert into DemoTable values(100,85885);
Query OK, 1 row affected (0.16 sec)

mysql> insert into DemoTable values(101,885995474);
Query OK, 1 row affected (0.14 sec)

mysql> insert into DemoTable values(100,895943);
Query OK, 1 row affected (0.20 sec)

テーブル内の全レコードを表示する

SELECT文を使って、テーブル内のすべてのレコードを確認してみましょう。

mysql> select *from DemoTable;

出力結果

+------+-----------+
| Id   | Value     |
+------+-----------+
|  100 |     85885 |
|  101 | 885995474 |
|  100 |    895943 |
+------+-----------+
3 rows in set (0.00 sec)

単一の列で並べ替える

まず基本として、Value列を降順(DESC)で並べ替えてみます。

mysql> select Id,Value from DemoTable order by Value DESC;

出力結果

+------+-----------+
| Id   | Value     |
+------+-----------+
|  101 | 885995474 |
|  100 |    895943 |
|  100 |     85885 |
+------+-----------+
3 rows in set (0.00 sec)

複数の列で並べ替える

複数の列で並べ替えるには、ORDER BY句の後ろに列名をカンマで区切って記述します。先頭に指定した列が優先され、その値が同じレコード同士については、次に指定した列の順序に従って並べ替えられます。

例えば「Id列は昇順(ASC)、Value列は降順(DESC)」というように、列ごとに異なる順序を指定することもできます。

mysql> select Id,Value from DemoTable order by Id ASC, Value DESC;

出力結果

+------+-----------+
| Id   | Value     |
+------+-----------+
|  100 |    895943 |
|  100 |     85885 |
|  101 | 885995474 |
+------+-----------+
3 rows in set (0.00 sec)

まとめ

ORDER BY句は「ORDER BY 列名1 [ASC|DESC], 列名2 [ASC|DESC], ...」の形式で記述することで、複数の列を組み合わせた柔軟なソートが可能です。昇順・降順は列ごとに自由に指定でき、順序を省略した場合はデフォルトで昇順(ASC)になります。大量のデータを見やすい形で整理したい場合に、ぜひ活用してください。

  1. MySQLの1つのUPDATE文で2つの列を同時に更新する方法

    はじめにMySQLでは、1つのUPDATE文の中でSET句を一度だけ使えば、複数の列を同時に更新できます。各列の指定はカンマ(,)で区切って記述します。この記事では、実際にテーブルを作成し、1つのクエリで2つの列(FirstNameとLastName)を更新する手順を解説します。サンプルテーブルの作成まず、以下のようにCREATE TABLE文でテーブルを作成します。mysql> create table DemoTable1909 ( Id int NOT NULL, FirstName varchar(20), LastName varchar(20)

  2. MySQLで1つのINSERT文を使って列に複数の値を一括挿入する方法

    はじめにMySQLでは、1つのINSERT文を繰り返し実行しなくても、単一のクエリだけで同じ列に複数の値を挿入できます。VALUES句の後ろに、挿入したい値をカンマ区切りのタプル(行)として列挙するだけです。この方法はデータベースへの接続回数を減らせるため、大量のデータを登録する際にパフォーマンス面でも大きなメリットがあります。基本構文複数の値を1つの列に挿入する場合の基本構文は以下のとおりです。INSERT INTO テーブル名 VALUES(値1),(値2),...,(値N);このように、各値を丸括弧で囲み、カンマ(,)で区切って並べることで、1回のクエリで複数行をまとめて挿入できます。実