MySQLで最大値(MAX)を取得する方法について書いています。
最大値を取得するときにはMAX関数を使うと良いです。
載せているSQLはMySQLのバージョン8.0.31で確認しました。
公式ドキュメントではこちらに記載がありました。
MAX関数で最大値を取得する
MAX関数を使うことで、テーブルのカラムの最大値を取得することができます。
SELECT文で確認したいテーブルをFROMに指定して、MAX関数に最大値を取得したいカラムを指定します。
例えば、下記のように使います。
SELECT MAX(price) FROM fruits;
こうすると、fruits
テーブルの価格(price
)カラムの最大値が返ってきます。
カラムの値が全てNULLのとき
最大値を取得したいカラムが全てNULLの場合には、NULLが返ってきます。
最大値を取得してみるサンプルSQL5選
実際に最大値を取得するSQLを実行して試していきます。
テストデータ
今回使用するテーブルは下記になります。
CREATE TABLE fruits (
id BIGINT NOT NULL AUTO_INCREMENT,
name VARCHAR(256),
color VARCHAR(256),
price INT,
created_at DATETIME,
PRIMARY KEY (id)
);
データは下記のように入っている状態です。
id | name | color | price | created_at |
---|---|---|---|---|
1 | apple | red | 100 | 2023-01-01 00:00:00 |
2 | grape | blue | 120 | 2023-02-01 00:00:00 |
3 | orange | orange | 130 | 2023-03-01 00:00:00 |
4 | banana | yellow | 110 | 2023-02-11 00:00:00 |
5 | peach | pink | 125 | 2023-01-12 00:00:00 |
6 | lemon | yellow | 120 | 2023-03-20 00:00:00 |
カラムが数値のとき
カラムが数値のprice
に対して、MAX関数を使って最大値を取得してみます。
SELECT MAX(price) FROM fruits;
実行すると、下記のようにprice
カラムの最大値の「130
」が取得できました。
mysql> SELECT MAX(price) FROM fruits;
+------------+
| MAX(price) |
+------------+
| 130 |
+------------+
1 row in set (0.00 sec)
カラムが日付のときにはどうなる?
日付のcreated_at
カラムに対して、MAX関数を使ってみます。
SELECT MAX(created_at) FROM fruits;
実行すると、下記のように、日付として一番新しい最新の日付が取得できました。
mysql> SELECT MAX(created_at) FROM fruits;
+---------------------+
| MAX(created_at) |
+---------------------+
| 2023-03-20 00:00:00 |
+---------------------+
1 row in set (0.00 sec)
カラムが文字列のときにはどうなる?
文字列(アルファベット)のカラムに対して、MAX関数を使ってみました。
SELECT MAX(name) FROM fruits;
下記のように、先頭文字がアルファベット順で最後の方の「peach
」が取得できました。
mysql> SELECT MAX(name) FROM fruits;
+-----------+
| MAX(name) |
+-----------+
| peach |
+-----------+
1 row in set (0.00 sec)
WHEREと一緒に使う
WHEREを使って、検索結果を絞った内容に対して、MAX関数を使うことができます。
例えば、下記のように使うことができます。
SELECT MAX(price) FROM fruits WHERE id in (4, 5, 6);
fruits
テーブルの最大の価格(price
)は「130
」でした。
WHEREで対象を絞ることによって、その結果から最大値を取得できます。
今回はWHEREでid
カラムが「4・5・6
」の内容に絞っています。
そのため、下記のようにid
が4〜6のデータで一番価格の高い「125
」が取得できました。
mysql> SELECT MAX(price) FROM fruits WHERE id in (4, 5, 6);
+------------+
| MAX(price) |
+------------+
| 125 |
+------------+
1 row in set (0.00 sec)
MySQLで最大値を取得する方法まとめ
今回はMySQLで最大値を取得するMAX関数について書きました。
記事の内容をまとめると、下記のようになります。
・MAX関数はカラムにデータがない場合にはNULLを返す。
・日付を指定した時には、最新の日付が返ってくる。
・文字列を指定した時には、降順に並べて最初のものが返ってきた。
・WHEREと一緒に使うことで、指定した範囲での最大値が取得できた。
コメント