MySQLで最小値(MIN)を取得する方法!サンプル5つ!

MySQL MySQL

MySQLで最小値(MIN)を取得する方法について書いています。
最小値を取得するときにはMIN関数を使うと良いです。

載せているSQLはMySQLのバージョン8.0.31で確認しました。
公式ドキュメントではこちらに記載がありました。

MIN関数で最小値を取得する

MIN関数を使うことで、テーブルのカラムの最小値を取得することができます。

SELECT文で確認したいテーブルをFROMに指定して、MIN関数に最小値を取得したいカラムを指定します。
例えば、下記のように使います。

SELECT MIN(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に対して、MIN関数を使って最小値を取得してみます。

SELECT MIN(price) FROM fruits;

実行すると、下記のようにpriceカラムの最小値の「100」が取得できました。

mysql> SELECT MIN(price) FROM fruits;
+------------+
| MIN(price) |
+------------+
|        100 |
+------------+
1 row in set (0.00 sec)

カラムが日付のときにはどうなる?

日付のcreated_atカラムに対して、MIN関数を使ってみます。

SELECT MIN(created_at) FROM fruits;

実行すると、下記のように、日付として一番古い日付が取得できました。

mysql> SELECT MIN(created_at) FROM fruits;
+---------------------+
| MIN(created_at)     |
+---------------------+
| 2023-01-01 00:00:00 |
+---------------------+
1 row in set (0.00 sec)

カラムが文字列のときにはどうなる?

文字列(アルファベット)のカラムに対して、MIN関数を使ってみました。

SELECT MIN(name) FROM fruits;

下記のように、先頭文字がアルファベット順で最初の方の「apple」が取得できました。

mysql> SELECT MIN(name) FROM fruits;
+-----------+
| MIN(name) |
+-----------+
| apple     |
+-----------+
1 row in set (0.00 sec)

WHEREと一緒に使う

WHEREを使って、検索結果を絞った内容に対して、MIN関数を使うことができます。
例えば、下記のように使うことができます。

SELECT MIN(price) FROM fruits WHERE id in (4, 5, 6);

fruitsテーブルの最小の価格(price)は「100」でした。

WHEREで対象を絞ることによって、その結果から最小値を取得できます。
今回はWHEREでidカラムが「4・5・6」の内容に絞っています。

そのため、下記のようにidが4〜6のデータで一番価格が低い「100」が取得できました。

mysql> SELECT MIN(price) FROM fruits WHERE id in (4, 5, 6);
+------------+
| MIN(price) |
+------------+
|        110 |
+------------+
1 row in set (0.00 sec)

MySQLで最小値を取得する方法まとめ

今回はMySQLで最小値を取得するMIN関数について書きました。
記事の内容をまとめると、下記のようになります。

・MIN関数をカラムに対して使うことで、カラムの最小値を取得できる。
・MIN関数はカラムにデータがない場合にはNULLを返す。
・日付を指定した時には、一番古い日付が返ってくる。
・文字列を指定した時には、昇順に並べて最初のものが返ってきた。
・WHEREと一緒に使うことで、指定した範囲での最小値が取得できた。

コメント

タイトルとURLをコピーしました