【MySQL】数値の差順にレコードを並べ替えて表示するクエリの書き方
MySQLでは、ORDER BY句に2つの列の差を指定することで、その数値の差に基づいてレコードを並べ替えて表示できます。点数の差や値の乖離が小さい順(または大きい順)にデータを確認したい場合に便利なテクニックです。
基本構文
数値の差順にレコードを表示するには、以下のような構文を使用します。
select *from テーブル名
order by (整数カラム名1 - 整数カラム名2);
サンプルテーブルの作成
まず、動作を確認するためのテーブルを作成しましょう。
mysql> create table DemoTable1313
-> (
-> Name varchar(20),
-> Score1 int,
-> Score2 int
-> );
Query OK, 0 rows affected (3.48 sec)
レコードの挿入
続いて、insertコマンドを使ってテーブルにレコードを挿入します。
mysql> insert into DemoTable1313 values('Chris',40,60);
Query OK, 1 row affected (0.38 sec)
mysql> insert into DemoTable1313 values('David',70,50);
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable1313 values('Adam',35,30);
Query OK, 1 row affected (0.18 sec)登録済みレコードの確認
select文ですべてのレコードを表示します。
mysql> select *from DemoTable1313;
出力結果
+-------+--------+--------+
| Name | Score1 | Score2 |
+-------+--------+--------+
| Chris | 40 | 60 |
| David | 70 | 50 |
| Adam | 35 | 30 |
+-------+--------+--------+
3 rows in set (0.00 sec)
数値の差順に並べ替えるクエリ
それでは、Score1とScore2の差順にレコードを並べ替えてみましょう。実行するクエリは以下の通りです。
mysql> select *from DemoTable1313
-> order by (Score1-Score2);
出力結果
+-------+--------+--------+
| Name | Score1 | Score2 |
+-------+--------+--------+
| Chris | 40 | 60 |
| Adam | 35 | 30 |
| David | 70 | 50 |
+-------+--------+--------+
3 rows in set (0.00 sec)
結果の解説
出力結果を見ると、レコードが以下の順序で並んでいることがわかります。
- Chris:40 − 60 = −20
- Adam:35 − 30 = 5
- David:70 − 50 = 20
つまり、差が小さいものから昇順にソートされています。逆に差が大きい順(降順)で表示したい場合は、末尾に「DESC」を付けて「order by (Score1-Score2) desc」とすればOKです。
-
MySQLで複数のレコードをすばやく一括挿入するクエリの書き方
MySQLで複数のレコードを効率よく挿入したい場合、INSERT文を何度も実行するのではなく、1つのINSERT文で複数行をまとめて指定するのがおすすめです。この方法ならデータベースとの通信回数が減り、処理速度が大幅に向上します。 基本構文 複数のレコードをすばやく挿入するには、単一のINSERT文を使い、以下の構文に従います。 insert into yourTableName values(yourValue1,yourValue2,...N),(yourValue1,yourValue2,...N).....N; ポイントは、各行の値セットをカンマ(,)で区切って並べるだけというシンプル
-
MySQLでTRUE/FALSEのレコードを0/1として表示する方法
MySQLでTRUE/FALSEのレコードを0/1として表示する方法MySQLでは、カラムのデータ型をBOOLEANとして定義することで、TRUE/FALSEの値が自動的に0と1として表示されます。BOOLEAN型は内部的にはTINYINT(1)のエイリアスであり、TRUEは1、FALSEは0として扱われます。以下、具体的な手順を解説します。1. テーブルの作成まず、BOOLEAN型のカラムを含むテーブルを作成しましょう。mysql> create table DemoTable2035 -> (