325

我试过但失败了:

mysql> select max(1,0);
ERROR 1064 (42000):您的 SQL 语法有错误;检查手册
对应于您的 MySQL 服务器版本,以便使用正确的语法
第 1 行的“0)”附近
4

3 回答 3

590

使用GREATEST()

例如:

SELECT GREATEST(2,1);

注意:无论何时,如果任何单个值包含 null,此函数总是返回 null(感谢用户 @sanghavi7)

于 2009-10-14T11:29:13.490 回答
28

要跨一组行获取列的最大值:

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

要获取每行的一组列、文字或变量的最大值:

SELECT GREATEST(column1, 1, 0, @val) FROM table; -- expect many results
于 2014-10-13T18:07:18.877 回答
7

您可以将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)。

于 2016-07-09T00:16:12.007 回答