MySQLで2つのカラムの値のうち最大値を取得する方法【GREATEST()関数】
MySQLで2つのカラム(列)の値を比較し、大きい方の値を取得したい場合は、GREATEST()関数を使用します。この関数は、引数として渡された複数の値の中から最も大きい値を返します。
GREATEST()関数の基本構文
基本的な構文は以下の通りです。AS句を使えば、結果のカラムに任意の別名(エイリアス)を付けることができます。
select greatest(yourColumnName1,yourColumnName2) AS anyAliasName from yourTableName;
サンプルテーブルの作成
まず、動作を確認するためのテーブルを作成しましょう。
mysql> create table DemoTable ( Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, Number1 int, Number2 int ); Query OK, 0 rows affected (0.63 sec)
レコードの挿入
次に、INSERTコマンドを使ってテーブルにいくつかのレコードを挿入します。
mysql> insert into DemoTable(Number1,Number2) values(1000,10000); Query OK, 1 row affected (0.49 sec) mysql> insert into DemoTable(Number1,Number2) values(600,900); Query OK, 1 row affected (0.12 sec) mysql> insert into DemoTable(Number1,Number2) values(12,9); Query OK, 1 row affected (0.33 sec) mysql> insert into DemoTable(Number1,Number2) values(19,56); Query OK, 1 row affected (0.17 sec)
テーブルの内容を確認する
SELECTコマンドでテーブル内のレコードを表示します。
mysql> select *from DemoTable;
上記のクエリを実行すると、次のような出力が得られます。
+----+---------+---------+ | Id | Number1 | Number2 | +----+---------+---------+ | 1 | 1000 | 10000 | | 2 | 600 | 900 | | 3 | 12 | 9 | | 4 | 19 | 56 | +----+---------+---------+ 4 rows in set (0.00 sec)
GREATEST()関数で2つのカラムの最大値を取得する
それでは、GREATEST()関数を使って、2つのカラムの値のうち大きい方を取得してみましょう。
mysql> select greatest(Number1,Number2) AS MAXIMUM_NUMBER_OF_TWO_COLUMNS from DemoTable;
実行結果は以下の通りです。
+-------------------------------+ | MAXIMUM_NUMBER_OF_TWO_COLUMNS | +-------------------------------+ | 10000 | | 900 | | 12 | | 56 | +-------------------------------+ 4 rows in set (0.00 sec)
結果の解説
出力結果をご覧ください。1行目では1000と10000が比較され、大きい方である「10000」が表示されています。同様に、他の行でも600と900からは「900」、12と9からは「12」、19と56からは「56」と、各行で大きい方の値が正しく取得できていることがわかります。
補足:GREATEST()関数を使う際の注意点
- GREATEST()関数は2つだけでなく、3つ以上の値の比較にも対応しています。例えば「greatest(Number1, Number2, Number3)」のように記述すれば、複数のカラムの中から最大値を一度に取得できます。
- 引数のいずれかにNULLが含まれている場合、GREATEST()はNULLを返す点に注意が必要です。NULLを除外して比較したい場合は、事前にCOALESCE()などでデフォルト値に置き換えるなどの対策が有効です。
-
【MySQL】MAX()とGREATEST()で1つの列・2つの列から最大スコア値を取得する方法
はじめに MySQLでは、1つの列から最大値を取得したい場合は MAX() 関数を、2つ以上の列の中から最も大きい値を取得したい場合は GREATEST() 関数を使用します。本記事では、実際にテーブルを作成してデータを投入しながら、両方の関数の使い方をサンプルコードと実行結果付きで解説します。 テーブルを作成する まず、サンプル用のテーブルを作成しましょう。 mysql> create table DemoTable790 ( Score1 int, Score2 int ); Query OK, 0 rows affected (0.45 sec) レコードを挿入する
-
MySQLのLIMITを使って上位2つの値を取得する方法をわかりやすく解説
MySQLで上位N件の値を取得する基本テーブルから最大値などの上位の値を取得したい場合は、ORDER BY DESC(降順ソート)を使用します。さらに、取得する件数を2件に絞りたい場合は LIMIT 2 を組み合わせることで実現できます。本記事では、実際にテーブルを作成し、サンプルデータを挿入しながら、上位2つの値を取得する手順を順番に見ていきましょう。1. サンプルテーブルの作成まず、数値カラム「Amount」を持つテーブルを作成します。mysql> create table DemoTable( Amount int);Query OK,