sql >> Database teknologi >  >> RDS >> Mysql

MAX() vs GREATEST() i MySQL:Hvad er forskellen?

Ved første øjekast er MySQL MAX() og GREATEST() funktioner udfører en lignende operation. De returnerer begge den maksimale værdi fra en række værdier. Der er dog forskel på disse to funktioner.

Den bedste måde at se forskellen mellem disse to funktioner på er at sammenligne deres syntaks.

Syntaks

Syntaksen for hver funktion ser sådan ud:

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

Så allerede nu ser de helt anderledes ud. MAX() funktionen accepterer DISTINCT søgeord samt en OVER klausul (og GREATEST() funktionen gør det ikke).

Den vigtigste forskel mellem disse to funktioner er dog i de accepterede argumenter. Specifikt:

  • MAX() accepterer ét argument
  • GREATEST() accepterer flere argumenter

MAX() bruges typisk til at returnere den maksimale værdi i en kolonne i en database. Tabellen kan indeholde mange rækker, men denne funktion returnerer den med den maksimale værdi.

GREATEST() på den anden side returnerer argumentet med maksimal værdi fra listen over argumenter, der er sendt til det. Så du kan sende f.eks. 3 argumenter til denne funktion, og den vil returnere den med den største værdi.

Eksempel 1 – MAX()-funktionen

Her er et eksempel til at demonstrere MAX() funktion.

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

Resultat:

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

Dette eksempel finder byen med den største befolkning fra City bord. Kolonnen, der indeholder befolkningen for hver by, kaldes Population .

Nøglepunktet ved dette eksempel er, at der kun blev leveret et argument til funktionen, men der blev spurgt til flere rækker.

Hvis du prøver at sende flere argumenter til MAX() funktion får du en fejl.

Eksempel 2 – Den STØRSTE() funktion

Her er et eksempel til at demonstrere GREATEST() funktion.

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

Resultat:

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

Så i dette tilfælde giver vi tre argumenter. Hvert argument sammenlignes med det andet. Dette er i modsætning til det enkelte argument, der er givet til MAX() funktion.

Hvis du prøver at sende et enkelt argument til GREATEST() funktion får du en fejl.


  1. SQL Server, der kører overvågning af forespørgsler

  2. Hvordan bruger man usignerede int/lange typer med Entity Framework?

  3. Hvordan får man primær nøglekolonne i Oracle?

  4. Kom godt i gang med Cloud Firestore til iOS