Réponses:
Utilisez GREATEST ()
Par exemple:
SELECT GREATEST(2,1);
Remarque: chaque fois que si une seule valeur contient null à ce moment, cette fonction retourne toujours null (Merci à l'utilisateur @ sanghavi7)
GREATEST
que je puisse obtenir des valeurs pour une colonne cirtain
select greatest(date1, ifnull(date2, "0000-00-00 00.00:00")) from table1 where date2 is null;
, vous obtiendrez date1.
GREATEST(COALESCE(column1, 0), COALESCE(column2, 0))
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, littéraux ou variables pour chaque ligne:
SELECT GREATEST(column1, 1, 0, @val) FROM table; -- expect many results
GREATEST
. Toute valeur nulle entraînera le retour de la fonction à null. Pour éviter cela, vous pouvez le faireGREATEST(COALESCE(column1, 0), COALESCE(column2, 0))
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).
select COALESCE(GREATEST(fieldA, fieldB),fieldA,fieldB) as maxValue
. C'est trop compliqué
GREATEST(COALESCE(column1, 0), COALESCE(column2, 0))