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