sql >> Databasteknik >  >> RDS >> Mysql

MAX() vs GREATEST() i MySQL:Vad är skillnaden?

Vid första anblicken, MySQL MAX() och GREATEST() funktioner utför en liknande operation. De returnerar båda maxvärdet från ett värdeintervall. Det finns dock en skillnad mellan dessa två funktioner.

Det bästa sättet att se skillnaden mellan dessa två funktioner är att jämföra deras syntax.

Syntax

Syntaxen för varje funktion ser ut så här:

MAX([DISTINCT] expr) [over_clause]
GREATEST(value1,value2,...)

Så redan nu ser de helt olika ut. MAX() funktionen accepterar DISTINCT nyckelord samt en OVER satsen (och GREATEST() funktionen inte).

Men den viktigaste skillnaden mellan dessa två funktioner ligger i de accepterade argumenten/erna. Närmare bestämt:

  • MAX() accepterar ett argument
  • GREATEST() accepterar flera argument

Alltså MAX() används vanligtvis för att returnera det maximala värdet i en kolumn i en databas. Tabellen kan innehålla många rader, men den här funktionen returnerar den med maximalt värde.

GREATEST() å andra sidan returnerar det maximalt värderade argumentet från listan över argument som skickas till det. Så du kan skicka säg 3 argument till den här funktionen och den kommer att returnera den med det största värdet.

Exempel 1 – MAX()-funktionen

Här är ett exempel för att demonstrera MAX() funktion.

SELECT MAX(Population) AS 'Result'
FROM City;

Resultat:

+----------+
| Result   |
+----------+
| 10500000 |
+----------+

Det här exemplet hittar staden med den största befolkningen från City tabell. Kolumnen som innehåller befolkningen för varje stad kallas Population .

Den viktigaste punkten med det här exemplet är att endast ett argument tillhandahölls till funktionen, men flera rader efterfrågades.

Om du försöker skicka flera argument till MAX() funktion får du ett felmeddelande.

Exempel 2 – funktionen GREATEST()

Här är ett exempel för att demonstrera GREATEST() funktion.

SELECT GREATEST(1, 5, 9) AS 'Result';

Resultat:

+--------+
| Result |
+--------+
|      9 |
+--------+

Så i det här fallet ger vi tre argument. Varje argument jämförs mot det andra. Detta är i motsats till det enda argumentet som tillhandahålls för MAX() funktion.

Om du försöker skicka ett enda argument till GREATEST() funktion får du ett felmeddelande.


  1. SQLite Group By

  2. Beräkna ålder i MySQL (InnoDb)

  3. Göra dina databaskomponenter mycket tillgängliga (HA) via lastbalanserare

  4. Hur ADDDATE() fungerar i MariaDB