MySQLで2つの値の最大値を取得する方法|GREATEST関数の使い方を解説
MySQLで2つの値を比較し、大きい方(最大値)を取得したい場合は、あらかじめ用意されている組み込み関数「GREATEST()」を使用します。この関数は、引数として渡された複数の値の中から最大の値を返してくれます。
GREATEST()関数の基本構文
GREATEST()関数の構文は以下のとおりです。
SELECT greatest(value1, value2);
このクエリを実行すると、value1とvalue2のうち大きい方の値が結果として返されます。それでは、具体的な使用例をいくつか見ていきましょう。
ケース1:数値(INT型)同士を比較する場合
まず、両方の引数に整数値を指定した場合の例です。
mysql> SELECT greatest(100, -300);
上記のクエリを実行すると、次のような出力が得られます。
+--------------------+ | greatest(100,-300) | +--------------------+ | 100 | +--------------------+ 1 row in set (0.00 sec)
100と-300を比較した結果、大きい方である「100」が返されていることがわかります。
ケース2:文字列同士を比較する場合
次に、引数に文字列を指定した場合の例を見てみましょう。
mysql> SELECT greatest('A', 'a');実行結果は以下のとおりです。
+-------------------+
| greatest('A','a') |
+-------------------+
| a |
+-------------------+
1 row in set (0.00 sec)この結果では「a」が表示されました。一見不思議に思えるかもしれませんが、これには理由があります。文字列の比較はASCIIコードの値に基づいて行われるためです。「a」のASCIIコードは97、「A」のASCIIコードは65です。つまり、97の方が65より大きいため、「a」が「A」よりも大きいと判定されるのです。
ASCIIコードの確認方法
実際にASCIIコードの値を確認してみましょう。文字のASCIIコードを取得するには、ASCII()関数を使用します。
まず「a」の場合のクエリです。
mysql> SELECT ascii('a');実行結果:
+------------+
| ascii('a') |
+------------+
| 97 |
+------------+
1 row in set (0.00 sec)続いて「A」の場合のクエリです。
mysql> SELECT ascii('A');実行結果:
+------------+
| ascii('A') |
+------------+
| 65 |
+------------+
1 row in set (0.00 sec)このように、GREATEST()関数は数値だけでなく文字列の比較にも対応しており、文字列の場合はASCIIコード(文字コード)の順序に従って大小が判定されます。なお、GREATEST()関数は2つ以上の引数にも対応しているため、3つ以上の値から最大値を取得することも可能です。
-
MySQLのLIMITを使って上位2つの値を取得する方法をわかりやすく解説
MySQLで上位N件の値を取得する基本テーブルから最大値などの上位の値を取得したい場合は、ORDER BY DESC(降順ソート)を使用します。さらに、取得する件数を2件に絞りたい場合は LIMIT 2 を組み合わせることで実現できます。本記事では、実際にテーブルを作成し、サンプルデータを挿入しながら、上位2つの値を取得する手順を順番に見ていきましょう。1. サンプルテーブルの作成まず、数値カラム「Amount」を持つテーブルを作成します。mysql> create table DemoTable( Amount int);Query OK,
-
JavaScriptでオブジェクトの値を取得する方法:Object.values()と_.values()の違いを解説
JavaScriptにはObject.values()など、オブジェクトの値を取得するためのメソッドがいくつか用意されています。しかし、これらの標準メソッドでは値を取り出すまでの手順がやや長くなりがちです。そこで便利なのが、JavaScriptライブラリ「Underscore.js」が提供する_.values()メソッドです。このメソッドを使えば、forループを記述することなく、オブジェクトの値を直接取得できます。 Object.values()を使った例 まずは標準メソッドであるObject.values()を使った例です。このメソッドで取得した値を順番に表示するには、for...ofループ