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

【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です。

  1. MySQLで複数のレコードをすばやく一括挿入するクエリの書き方

    MySQLで複数のレコードを効率よく挿入したい場合、INSERT文を何度も実行するのではなく、1つのINSERT文で複数行をまとめて指定するのがおすすめです。この方法ならデータベースとの通信回数が減り、処理速度が大幅に向上します。 基本構文 複数のレコードをすばやく挿入するには、単一のINSERT文を使い、以下の構文に従います。 insert into yourTableName values(yourValue1,yourValue2,...N),(yourValue1,yourValue2,...N).....N; ポイントは、各行の値セットをカンマ(,)で区切って並べるだけというシンプル

  2. 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     -> (