来自两个或更多领域的最大价值

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

SELECT MAX(field1), MAX(field2) 

现在,我怎么才能从这两个方面获得最大的价值呢?

您可能想要使用GREATEST()函数:

 SELECT GREATEST(field1, field2); 

如果您想从所有行中获取绝对最大值,那么您可能需要使用以下内容:

 SELECT GREATEST(MAX(field1), MAX(field2)); 

例1:

 SELECT GREATEST(1, 2); +----------------+ | GREATEST(1, 2) | +----------------+ | 2 | +----------------+ 1 row in set (0.00 sec) 

例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) 

如果你为每一行selectGREATEST()

 SELECT GREATEST(field1, field2) 

如果其中一个字段是NULL,它将返回NULL。 你可以使用IFNULL来解决这个问题

 SELECT GREATEST(IFNULL(field1, 0), IFNULL(field2, 0)) 
 mysql> SELECT GREATEST(2,0); -> 2 

所以,试试:

 mysql> SELECT GREATEST(MAX(field1), MAX(field2)); 
 SELECT max( CASE WHEN field1 > field2 THEN field1 ELSE field2 END ) as biggestvalue FROM YourTable;