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

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()などでデフォルト値に置き換えるなどの対策が有効です。
  1. 【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) レコードを挿入する

  2. MySQLのLIMITを使って上位2つの値を取得する方法をわかりやすく解説

    MySQLで上位N件の値を取得する基本テーブルから最大値などの上位の値を取得したい場合は、ORDER BY DESC(降順ソート)を使用します。さらに、取得する件数を2件に絞りたい場合は LIMIT 2 を組み合わせることで実現できます。本記事では、実際にテーブルを作成し、サンプルデータを挿入しながら、上位2つの値を取得する手順を順番に見ていきましょう。1. サンプルテーブルの作成まず、数値カラム「Amount」を持つテーブルを作成します。mysql> create table DemoTable(    Amount int);Query OK,