sql >> Database >  >> RDS >> Mysql

MAX() vs GREATEST() in MySQL:wat is het verschil?

Op het eerste gezicht lijkt de MySQL MAX() en GREATEST() functies voeren een vergelijkbare bewerking uit. Ze retourneren allebei de maximale waarde uit een reeks waarden. Er is echter een verschil tussen deze twee functies.

De beste manier om het verschil tussen deze twee functies te zien, is door hun syntaxis te vergelijken.

Syntaxis

De syntaxis voor elke functie gaat als volgt:

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

Ze zien er dus al heel anders uit. De MAX() functie accepteert de DISTINCT trefwoord en een OVER clausule (en de GREATEST() functie niet).

Het belangrijkste verschil tussen deze twee functies zit echter in de geaccepteerde argumenten. Specifiek:

  • MAX() accepteert één argument
  • GREATEST() accepteert meerdere argumenten

Dus MAX() wordt meestal gebruikt om de maximale waarde in een kolom in een database te retourneren. De tabel kan veel rijen bevatten, maar deze functie retourneert degene met de maximale waarde.

GREATEST() aan de andere kant retourneert het het argument met de maximale waarde uit de lijst met argumenten die eraan zijn doorgegeven. Dus je zou bijvoorbeeld 3 argumenten aan deze functie kunnen doorgeven en het zal degene met de grootste waarde teruggeven.

Voorbeeld 1 – De MAX() Functie

Hier is een voorbeeld om de MAX() . te demonstreren functie.

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

Resultaat:

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

Dit voorbeeld vindt de stad met de grootste populatie van de City tafel. De kolom die de bevolking voor elke stad bevat, heet Population .

Het belangrijkste punt van dit voorbeeld is dat er maar één argument aan de functie is geleverd, maar dat er meerdere rijen zijn opgevraagd.

Als u meerdere argumenten probeert door te geven aan de MAX() functie krijgt u een foutmelding.

Voorbeeld 2 – De GREATEST() Functie

Hier is een voorbeeld om de GREATEST() . te demonstreren functie.

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

Resultaat:

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

Dus in dit geval geven we drie argumenten. Elk argument wordt vergeleken met het andere. Dit is in tegenstelling tot het enkele argument dat wordt gegeven aan de MAX() functie.

Als u een enkel argument probeert door te geven aan de GREATEST() functie krijgt u een foutmelding.


  1. SQLite - Een tabel maken

  2. Uren aftrekken van een datetime-waarde in MariaDB

  3. PostgreSQL 9.2 JDBC-stuurprogramma gebruikt de tijdzone van de client?

  4. Oracle Entity Framework - Genereer entiteit uit tabellen in verschillende schema's