web-dev-qa-db-ja.com

MySQLで最大2つの値を取得する方法は?

試しましたが失敗しました:

mysql> select max(1,0);
エラー1064(42000):SQL構文にエラーがあります。 1行目
で
 near '0)'を使用する正しい構文については、MySQLサーバーのバージョンに対応するマニュアル
を確認してください。
263
Mask

GREATEST() を使用します

例えば。:

SELECT GREATEST(2,1);

注:その時点でいずれかの単一値にnullが含まれている場合は常に、この関数は常にnullを返します(ユーザー@ sanghavi7に感謝)

479
NinethSense

行のセット全体で列の最大値を取得するには:

SELECT MAX(column1) FROM table; -- expect one result

各行の列、リテラル、または変数のセットの最大値を取得するには:

SELECT GREATEST(column1, 1, 0, @val) FROM table; -- expect many results
23
cs_alumnus

GREATEST 関数はnull入力不可フィールドで使用できます。この値のいずれか(または両方)が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の場合)。

4
Leonid Zakharov