2009-09-09 11 views
10

Lors de la mise à jour d'une ligne, je souhaite effectuer une vérification intégrée afin de vérifier certaines limites. La plupart des langages ont une fonction MAX() pour retourner le maximum d'arguments passés, mais MySQL semble utiliser MAX() pour quelque chose d'autre. Par exemple:MySQL MAX() pour comparer des valeurs numériques dans une mise à jour?

UPDATE person SET dollars = MAX(0, dollars-20) WHERE id=1 

Je veux soustraire 20 dollars de personne id 1, mais je ne veux pas de dollars à jamais être représentés par une valeur négative, donc je veux intégré par rapport à 0. Est-ce travail? Ou y a-t-il un autre moyen? Merci! MySQL prend en charge une fonction appelée GREATEST()

Répondre

35

Il renvoie la plus grande valeur parmi une liste de ses arguments.

UPDATE person SET dollars = GREATEST(0, dollars-20) WHERE id=1 

Ce n'est pas une fonction standard dans la norme ANSI SQL, alors ne comptez pas être disponible dans d'autres marques de base de données SQL. Si vous avez besoin d'une solution indépendante du fournisseur, utilisez la syntaxe CASE suggérée par d'autres. Mais si tout ce que vous avez besoin d'utiliser est MySQL, cette fonction est plus concise.

+3

La fonction 'MIN()' correspondante est appelée 'LEAST()' –

Questions connexes