Na první pohled MySQL MAX()
a GREATEST()
funkce provádějí podobnou operaci. Oba vrátí maximální hodnotu z rozsahu hodnot. Mezi těmito dvěma funkcemi je však rozdíl.
Nejlepší způsob, jak vidět rozdíl mezi těmito dvěma funkcemi, je porovnat jejich syntaxi.
Syntaxe
Syntaxe každé funkce vypadá takto:
MAX([DISTINCT] expr) [over_clause] GREATEST(value1,value2,...)
Takže už vypadají úplně jinak. MAX()
funkce přijímá DISTINCT
klíčové slovo a také OVER
klauzule (a GREATEST()
funkce nefunguje).
Klíčový rozdíl mezi těmito dvěma funkcemi je však v přijatých argumentech. Konkrétně:
MAX()
přijímá jeden argumentGREATEST()
přijímá více argumentů
Takže MAX()
se obvykle používá k vrácení maximální hodnoty ve sloupci v databázi. Tabulka může obsahovat mnoho řádků, ale tato funkce vrací ten s maximální hodnotou.
GREATEST()
na druhé straně vrátí argument s maximální hodnotou ze seznamu argumentů, které mu byly předány. Takže této funkci můžete předat řekněme 3 argumenty a vrátí ten s největší hodnotou.
Příklad 1 – Funkce MAX()
Zde je příklad demonstrující MAX()
funkce.
SELECT MAX(Population) AS 'Result' FROM City;
Výsledek:
+----------+ | Result | +----------+ | 10500000 | +----------+
Tento příklad najde město s největším počtem obyvatel z City
stůl. Sloupec, který obsahuje počet obyvatel pro každé město, se nazývá Population
.
Klíčovým bodem tohoto příkladu je, že funkci byl dodán pouze jeden argument, ale bylo dotazováno na více řádků.
Pokud se pokusíte předat více argumentů do MAX()
funkce, zobrazí se chyba.
Příklad 2 – Funkce GREATEST()
Zde je příklad demonstrující GREATEST()
funkce.
SELECT GREATEST(1, 5, 9) AS 'Result';
Výsledek:
+--------+ | Result | +--------+ | 9 | +--------+
V tomto případě tedy uvádíme tři argumenty. Každý argument je porovnán s druhým. To je v kontrastu s jediným argumentem poskytnutým pro MAX()
funkce.
Pokud se pokusíte předat jeden argument do GREATEST()
funkce, zobrazí se chyba.