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

【MySQL】複数の列から最大値を取得する方法 ― GREATEST()関数の使い方

1行の中に格納された複数の列(カラム)から最大値を取得したい場合、MySQLではGREATEST()関数を使用します。MAX()関数が「行をまたいだ集計」に使われるのに対し、GREATEST()は「同一行内の複数列」を比較して最も大きい値を返す点が特徴です。

サンプルテーブルの作成

まず、3つの整数型カラムを持つテーブルを作成しましょう。

mysql> create table DemoTable
-> (
-> Value1 int,
-> Value2 int,
-> Value3 int
-> );
Query OK, 0 rows affected (1.29 sec)

データの挿入

INSERT文を使って、テーブルにレコードを追加します。

mysql> insert into DemoTable values(100,600,400);
Query OK, 1 row affected (0.19 sec)

登録内容の確認

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

mysql> select *from DemoTable;

出力結果

+--------+--------+--------+
| Value1 | Value2 | Value3 |
+--------+--------+--------+
| 100 | 600 | 400 |
+--------+--------+--------+
1 row in set (0.00 sec)

GREATEST()関数で最大値を取得する

それでは、GREATEST()関数を使って同一行内の3つの列から最大値を取得するクエリを見てみましょう。AS句でエイリアスを指定すると、結果が読みやすくなります。

mysql> select greatest(Value1,Value2,Value3) AS HighestFrom1Row from DemoTable;

出力結果

+-----------------+
| HighestFrom1Row |
+-----------------+
| 600 |
+-----------------+
1 row in set (0.00 sec)

このように、GREATEST()関数に比較対象の列をカンマ区切りで渡すだけで、その中で最も大きい値(この例では600)を簡単に取得できます。

補足:NULLが含まれる場合の注意点

GREATEST()関数に渡した引数の中にひとつでもNULLが含まれていると、戻り値もNULLになります。NULLを除外して比較したい場合は、COALESCE()関数などと組み合わせて対応するとよいでしょう。

  1. 【MySQL】SUBSTRING_INDEXでカンマ区切り文字列から指定位置の値を取得する方法

    カンマ区切りの文字列から、指定した位置にある単一の値を取り出したい場合は、SUBSTRING_INDEX() 関数を使用します。この関数をネスト(入れ子)して呼び出すことで、任意の位置の要素を簡単に抽出できます。1. サンプルテーブルの作成まず、カンマ区切りの文字列を格納するテーブルを作成します。mysql> create table DemoTable1615 -> ( -> ListOfSubject text -> ); Query OK, 0 rows affected (0.81 sec)2. レコードの挿入INSERT文を使って、カン

  2. MySQLで特定の行から単一の値だけを取得する方法(SELECT INTOの使い方)

    MySQLで特定の条件に一致する行から、単一の値だけを変数に取得したい場合は、SELECT ... INTO 変数構文とWHERE句を組み合わせて使用します。この記事では、実際のテーブル作成から値の取得までの手順を順番に解説します。 1. サンプルテーブルを作成する まずは動作確認用のテーブルを作成しましょう。学生ID・氏名・点数を持つシンプルなテーブルを定義します。 mysql> create table DemoTable1896 ( StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY, StudentName