来自两个或多个字段的最大值

Qia*_*iao 71 mysql

我需要从两个领域获得最大价值:

SELECT MAX(field1), MAX(field2)
Run Code Online (Sandbox Code Playgroud)

现在,我怎样才能从这两个中获得最大价值?

Dan*_*llo 150

您可能想要使用该GREATEST()功能:

SELECT GREATEST(field1, field2);
Run Code Online (Sandbox Code Playgroud)

如果要从所有行获得绝对最大值,则可能需要使用以下内容:

SELECT GREATEST(MAX(field1), MAX(field2));
Run Code Online (Sandbox Code Playgroud)

例1:

SELECT GREATEST(1, 2);
+----------------+
| GREATEST(1, 2) |
+----------------+
|              2 |
+----------------+
1 row in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)

例2:

CREATE TABLE a (a int, b int);

INSERT INTO a VALUES (1, 1);
INSERT INTO a VALUES (2, 1);
INSERT INTO a VALUES (3, 1);
INSERT INTO a VALUES (1, 2);
INSERT INTO a VALUES (1, 4);

SELECT GREATEST(MAX(a), MAX(b)) FROM a;
+--------------------------+
| GREATEST(MAX(a), MAX(b)) |
+--------------------------+
|                        4 |
+--------------------------+
1 row in set (0.02 sec)
Run Code Online (Sandbox Code Playgroud)


dav*_*vis 31

如果你为每一行选择GREATEST()

SELECT GREATEST(field1, field2)
Run Code Online (Sandbox Code Playgroud)

它将返回NULL如果字段为NULL.您可以使用IFNULL来解决这个问题

SELECT GREATEST(IFNULL(field1, 0), IFNULL(field2, 0))
Run Code Online (Sandbox Code Playgroud)


Ben*_*Ben 6

mysql> SELECT GREATEST(2,0);
        -> 2
Run Code Online (Sandbox Code Playgroud)

所以,试试:

mysql> SELECT GREATEST(MAX(field1), MAX(field2));
Run Code Online (Sandbox Code Playgroud)