sql >> Databáze >  >> RDS >> Mysql

MAX() vs GREATEST() v MySQL:Jaký je rozdíl?

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 argument
  • GREATEST() 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.


  1. Jak získat metadata databáze

  2. Rozdělte daný řetězec a připravte případové prohlášení

  3. Jak zastavit nebo omezit provoz SST na Galera Cluster

  4. Oracle SQL:časová razítka v klauzuli where