Mysql
 sql >> Base de données >  >> RDS >> Mysql

MAX() vs GREATEST() dans MySQL :Quelle est la différence ?

À première vue, MySQL MAX() et GREATEST() les fonctions effectuent une opération similaire. Ils renvoient tous les deux la valeur maximale d'une plage de valeurs. Cependant, il existe une différence entre ces deux fonctions.

La meilleure façon de voir la différence entre ces deux fonctions est de comparer leur syntaxe.

Syntaxe

La syntaxe de chaque fonction ressemble à ceci :

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

Alors déjà, ils ont l'air complètement différents. Le MAX() la fonction accepte le DISTINCT mot clé ainsi qu'un OVER clause (et la GREATEST() fonction ne fonctionne pas).

Cependant, la principale différence entre ces deux fonctions réside dans le ou les arguments acceptés. Plus précisément :

  • MAX() accepte un argument
  • GREATEST() accepte plusieurs arguments

Donc MAX() est généralement utilisé pour renvoyer la valeur maximale dans une colonne d'une base de données. Le tableau peut contenir plusieurs lignes, mais cette fonction renvoie celle avec la valeur maximale.

GREATEST() d'autre part, renvoie l'argument de valeur maximale de la liste des arguments qui lui sont passés. Vous pouvez donc passer, disons, 3 arguments à cette fonction et elle renverra celui avec la plus grande valeur.

Exemple 1 - La fonction MAX()

Voici un exemple pour démontrer le MAX() fonction.

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

Résultat :

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

Cet exemple trouve la ville avec la plus grande population de la City table. La colonne qui contient la population de chaque ville s'appelle Population .

Le point clé de cet exemple est qu'un seul argument a été fourni à la fonction, mais plusieurs lignes ont été interrogées.

Si vous essayez de passer plusieurs arguments au MAX() fonction, vous obtiendrez une erreur.

Exemple 2 - La fonction GREATEST()

Voici un exemple pour démontrer le GREATEST() fonction.

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

Résultat :

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

Donc, dans ce cas, nous fournissons trois arguments. Chaque argument est comparé à l'autre. Ceci est en contraste avec l'argument unique fourni au MAX() fonction.

Si vous essayez de passer un seul argument au GREATEST() fonction, vous obtiendrez une erreur.