Самое большое значение из двух или более полей


Мне нужно, чтобы получить наибольшее значение из двух полей:

SELECT MAX(field1), MAX(field2)

теперь, как я могу получить наибольшее значение из этих двух?

4 61

4 ответа:

вы можете использовать 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)

в случае, если вы выбираете наибольший () для каждой строки

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;