回答:
GREATEST()を使用します
例えば:
SELECT GREATEST(2,1);
注:その時点でいずれかの単一の値にnullが含まれている場合、この関数は常にnullを返します(ユーザー@ sanghavi7に感謝)
LEAST
GREATEST
特定の列の値を取得できるように、サブクエリをパラメーターとして実行するには
select greatest(date1, ifnull(date2, "0000-00-00 00.00:00")) from table1 where date2 is null;
date1を取得します。
GREATEST(COALESCE(column1, 0), COALESCE(column2, 0))
行のセット全体で列の最大値を取得するには:
SELECT MAX(column1) FROM table; -- expect one result
各行の列、リテラル、または変数のセットの最大値を取得するには:
SELECT GREATEST(column1, 1, 0, @val) FROM table; -- expect many results
GREATEST
。null値があると、関数はnullを返します。これを防ぐには、次のようにしますGREATEST(COALESCE(column1, 0), COALESCE(column2, 0))
NULL可能ではないフィールドでGREATEST関数を使用できます。この値のいずれか(または両方)がNULLになる可能性がある場合は、使用しないでください(結果はNULLになる可能性があります)。
select
if(
fieldA is NULL,
if(fieldB is NULL, NULL, fieldB), /* second NULL is default value */
if(fieldB is NULL, field A, GREATEST(fieldA, fieldB))
) as maxValue
NULLを好みのデフォルト値に変更できます(両方の値がNULLの場合)。
select COALESCE(GREATEST(fieldA, fieldB),fieldA,fieldB) as maxValue
。複雑すぎる
GREATEST(COALESCE(column1, 0), COALESCE(column2, 0))