web-dev-qa-db-fra.com

Comment obtenir le maximum de deux valeurs dans MySQL?

J'ai essayé mais j'ai échoué:

mysql> select max(1,0);
 ERREUR 1064 (42000): vous avez une erreur dans votre syntaxe SQL; Consultez le manuel 
 qui correspond à la version de votre serveur MySQL pour connaître la syntaxe à utiliser pour 
 près de '0)' à la ligne 1 
269
Mask

Utilisez GREATEST () (---

Par exemple.:

SELECT GREATEST(2,1);

Remarque: chaque fois qu'une valeur unique contient la valeur null à ce moment-là, cette fonction renvoie toujours la valeur null (Merci à l'utilisateur @ sanghavi7)

492
NinethSense

Pour obtenir la valeur maximale d'une colonne sur un ensemble de lignes:

SELECT MAX(column1) FROM table; -- expect one result

Pour obtenir la valeur maximale d'un ensemble de colonnes, de littéraux ou de variables pour chaque ligne:

SELECT GREATEST(column1, 1, 0, @val) FROM table; -- expect many results
25
cs_alumnus

Vous pouvez utiliser la fonction GREATEST avec des champs non nullables. Si l'une de ces valeurs (ou les deux) peut être NULL, ne l'utilisez pas (le résultat peut être NULL).

select 
    if(
        fieldA is NULL, 
        if(fieldB is NULL, NULL, fieldB), /* second NULL is default value */
        if(fieldB is NULL, field A, GREATEST(fieldA, fieldB))
    ) as maxValue

Vous pouvez remplacer NULL par votre valeur par défaut préférée (si les deux valeurs sont NULL).

5
Leonid Zakharov