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

【MySQL入門】数値カラムから最大値を取得する2つの方法を実例付きで解説

MySQLのテーブルに保存された数値データの中から最大値を取得したい場面はよくあります。例えば、売上金額の最高額や、テストスコアの最高点を求めるようなケースです。本記事では、数値型カラムから最大値を取得する2つの方法を、実際のSQL文と実行結果付きでわかりやすく解説します。

最大値を取得する2つの構文

MySQLで最大値を取得するには、以下のいずれかの構文を使用します。

-- 方法1:MAX関数を使う
select max(yourColumnName) from yourTableName;

-- 方法2:ORDER BY句とLIMIT句を組み合わせる
select *from yourTableName order by yourColumnName desc limit 1;

それぞれの特徴は後述しますが、まずは実際にテーブルを作成して動作を確認していきましょう。

サンプルテーブルの作成

はじめに、動作確認用のテーブルを作成します。

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

次に、INSERT文を使っていくつかのレコードを挿入します。

mysql> insert into DemoTable values(45);
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable values(87);
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable values(56);
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable values(77);
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable values(85);
Query OK, 1 row affected (0.17 sec)

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

mysql> select *from DemoTable;

実行結果は以下の通りです。

+-------+
| Value |
+-------+
|    45 |
|    87 |
|    56 |
|    77 |
|    85 |
+-------+
5 rows in set (0.00 sec)

5件のレコードが登録されていることが確認できます。この中から最大値を取得していきます。

方法1:MAX関数で最大値を取得する

まずは、集計関数のMAX()を使用する方法です。

mysql> select max(Value) from DemoTable;

実行結果:

+------------+
| max(Value) |
+------------+
|         87 |
+------------+
1 row in set (0.00 sec)

最大値である「87」が正しく返されました。MAX関数は対象カラムの中で最も大きい値だけを1行返すため、シンプルかつ効率的な方法です。

方法2:ORDER BY DESC + LIMIT 1で最大値を取得する

続いて、代替手段としてORDER BY句とLIMIT句を組み合わせる方法を見てみましょう。値を降順(大きい順)に並べ替え、先頭の1行だけを取得します。

mysql> select *from DemoTable order by Value desc limit 1;

実行結果:

+-------+
| Value |
+-------+
|    87 |
+-------+
1 row in set (0.00 sec)

こちらの方法でも同じく「87」を取得できました。

2つの方法の使い分けのポイント

  • MAX関数:最大値そのものだけが必要な場合に最適です。インデックスが設定されたカラムに対しては非常に高速に動作します。
  • ORDER BY + LIMIT 1:最大値を持つ「行全体」(他のカラムの値も含む)を一緒に取得したい場合に便利です。SELECT * を使っているため、該当レコードの全情報が得られます。

「値だけ欲しいのか」「その値を持つレコード全体が欲しいのか」という目的に応じて、適切な方法を選択するとよいでしょう。

  1. MySQLで列の最大値を取得する方法をわかりやすく解説

    MySQLで特定の列の最大値を取得するには、MAX(columnName)関数を使用します。本記事では、その基本的な使い方に加えて、データベースやテーブルの設計に関する前提知識もあわせて解説します。MySQLのデータベースとテーブルの基礎MySQLをインストールする前に、まず使用するバージョンと配布形式(バイナリファイルか、ソースファイルからビルドするか)を決定することが重要です。新しく作成したばかりのデータベースには、当然ながらテーブルはまだ存在しません。データベース設計において最も重要なのは、以下の要素を決めることです。データベース全体の構造必要となるテーブルの一覧各テーブルに含まれる列(

  2. MySQLで列から最大値を取得する方法

    MySQLで列の最大値を取得するには?MySQLのテーブルから特定の列の最大値を取得するには、ORDER BY句とLIMIT句を組み合わせる方法が便利です。ここでは、実際にテーブルを作成し、データを挿入して、最大値を取得する手順を順番に解説します。1. テーブルを作成するまず、以下のコマンドでサンプル用のテーブルを作成します。mysql> create table DemoTable -> ( -> Value int -> ); Query OK, 0 rows affected (0.63 sec)2. レコードを挿入する次に、INSERTコ