мне нужно получить наибольшее значение из двух полей:Biggest значение из двух или более полей
SELECT MAX(field1), MAX(field2)
Теперь, как я могу получить наибольшее значение из этих двух?
мне нужно получить наибольшее значение из двух полей:Biggest значение из двух или более полей
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)
не знаю почему, но работает только 'БОЛЬШЕЕ (MAX (поле1), MAX (поле2))'. Повторяется неверный номер (не самый большой) – Qiao
@Qiao: Вам понадобится 'SELECT GREATEST (MAX (field1), MAX (field2));' для получения абсолютного максимума из всех строк. Если вы используете 'SELECT GREATEST (field1, field2);' вы получите результат с максимальным значением между полем1 и полем2 для каждой строки. –
Вот что я искал, я был уверен, что для этого есть функция, но у меня не было понятия об этом, теперь это имеет смысл :) –
SELECT max(CASE
WHEN field1 > field2 THEN field1
ELSE field2
END) as biggestvalue
FROM YourTable;
mysql> SELECT GREATEST(2,0);
-> 2
Итак, попробуйте:
mysql> SELECT GREATEST(MAX(field1), MAX(field2));
В случае, если вы выбирая БОЛЬШОЕ() для каждой строки
SELECT GREATEST(field1, field2)
Она возвращает NULL если одно из полей - NULL. Вы можете использовать IFNULL для решения этой проблемы
SELECT GREATEST(IFNULL(field1, 0), IFNULL(field2, 0))
'GREATEST()' для самого большого аналогично 'LEAST()' для наименьшего. –