単一のMySQLクエリで最大値と最小値を同時に取得する方法
MySQLでは、集計関数である MIN() と MAX() を1つのSELECT文に組み合わせることで、単一のクエリだけでカラムの最小値と最大値を同時に取得できます。この記事では、実際にテーブルを作成し、データを挿入してから、その取得方法を順を追って解説します。
サンプルテーブルの作成
まずは、2つのINT型カラムを持つテーブルを作成します。
mysql> create table DemoTable
(
FirstValue int,
SecondValue int
);
Query OK, 0 rows affected (0.66 sec)
テストデータの挿入
次に、INSERTコマンドを使っていくつかのレコードを挿入します。
mysql> insert into DemoTable values(10,30); Query OK, 1 row affected (0.18 sec) mysql> insert into DemoTable values(30,60); Query OK, 1 row affected (0.15 sec) mysql> insert into DemoTable values(100,500); Query OK, 1 row affected (0.10 sec) mysql> insert into DemoTable values(50,80); Query OK, 1 row affected (0.18 sec)
登録されたデータの確認
SELECTコマンドでテーブルの中身を表示してみましょう。
mysql> select *from DemoTable;
このクエリを実行すると、以下のような結果が出力されます。
+------------+-------------+ | FirstValue | SecondValue | +------------+-------------+ | 10 | 30 | | 30 | 60 | | 100 | 500 | | 50 | 80 | +------------+-------------+ 4 rows in set (0.00 sec)
単一クエリで最大値と最小値を取得する
それでは本題です。MIN()関数とMAX()関数を同じSELECT文内で使用することで、複数回クエリを実行する必要なく、両方の値を一度に取得できます。
mysql> select min(FirstValue),min(SecondValue),max(FirstValue),max(SecondValue) from DemoTable;
実行結果は以下の通りです。
+-----------------+------------------+-----------------+------------------+ | min(FirstValue) | min(SecondValue) | max(FirstValue) | max(SecondValue) | +-----------------+------------------+-----------------+------------------+ | 10 | 30 | 100 | 500 | +-----------------+------------------+-----------------+------------------+ 1 row in set (0.00 sec)
ポイントまとめ
- min(FirstValue) = 10:FirstValueカラムの最小値
- min(SecondValue) = 30:SecondValueカラムの最小値
- max(FirstValue) = 100:FirstValueカラムの最大値
- max(SecondValue) = 500:SecondValueカラムの最大値
このように、MIN()とMAX()はWHERE句やGROUP BY句とも組み合わせて使えるため、条件付きの統計情報を効率よく取得したい場合にも非常に便利です。大量のデータを扱う際も、1回のクエリで済むためパフォーマンス面でも有利になります。
-
MySQLで最大・最小の給与行を選択するクエリの書き方
MySQLで最大・最小の給与行を取得する方法テーブルから給与が最も高い行と最も低い行を同時に取得したい場合は、サブクエリとMIN()関数・MAX()関数を組み合わせます。さらに、最大値と最小値の両方を一度に扱うためにUNION ALLを使用します。ここでは、テーブル作成から結果確認までの手順をサンプルコードとともに解説します。1. サンプルテーブルの作成まず、従業員名と給与を格納するテーブルを作成しましょう。mysql> create table DemoTable -> ( -> E
-
MySQLで1つのINSERT文を使って列に複数の値を一括挿入する方法
はじめにMySQLでは、1つのINSERT文を繰り返し実行しなくても、単一のクエリだけで同じ列に複数の値を挿入できます。VALUES句の後ろに、挿入したい値をカンマ区切りのタプル(行)として列挙するだけです。この方法はデータベースへの接続回数を減らせるため、大量のデータを登録する際にパフォーマンス面でも大きなメリットがあります。基本構文複数の値を1つの列に挿入する場合の基本構文は以下のとおりです。INSERT INTO テーブル名 VALUES(値1),(値2),...,(値N);このように、各値を丸括弧で囲み、カンマ(,)で区切って並べることで、1回のクエリで複数行をまとめて挿入できます。実