来自两个或更多领域的最大价值
我需要从两个领域获得最大的价值:
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;