На пръв поглед MySQL MAX()
и GREATEST()
функции изпълняват подобна операция. И двете връщат максималната стойност от диапазон от стойности. Има обаче разлика между тези две функции.
Най-добрият начин да видите разликата между тези две функции е да сравните техния синтаксис.
Синтаксис
Синтаксисът за всяка функция е така:
MAX([DISTINCT] expr) [over_clause] GREATEST(value1,value2,...)
Така че вече изглеждат съвсем различно. MAX()
функцията приема DISTINCT
ключова дума, както и OVER
клауза (и GREATEST()
функцията не работи).
Въпреки това, основната разлика между тези две функции е в приетите аргументи. По-конкретно:
MAX()
приема един аргументGREATEST()
приема множество аргументи
Така че MAX()
обикновено се използва за връщане на максималната стойност в колона в база данни. Таблицата може да съдържа много редове, но тази функция връща този с максимална стойност.
GREATEST()
от друга страна, връща аргумента с максимална стойност от списъка с аргументи, предадени към него. Така че можете да предадете 3 аргумента на тази функция и тя ще върне този с най-голяма стойност.
Пример 1 – Функцията MAX()
Ето пример за демонстриране на MAX()
функция.
SELECT MAX(Population) AS 'Result' FROM City;
Резултат:
+----------+ | Result | +----------+ | 10500000 | +----------+
Този пример намира града с най-голямо население от City
маса. Колоната, която съдържа населението за всеки град, се нарича Population
.
Ключовият момент в този пример е, че на функцията е предоставен само един аргумент, но са запитани множество реда.
Ако се опитате да предадете множество аргументи към MAX()
функция, ще получите грешка.
Пример 2 – НАЙ-ГОЛЯМАТА() функция
Ето един пример за демонстрация на GREATEST()
функция.
SELECT GREATEST(1, 5, 9) AS 'Result';
Резултат:
+--------+ | Result | +--------+ | 9 | +--------+
Така че в този случай предоставяме три аргумента. Всеки аргумент се сравнява с другия. Това е в контраст с единичния аргумент, предоставен на MAX()
функция.
Ако се опитате да предадете единичен аргумент на GREATEST()
функция, ще получите грешка.