Valeur de décrément dans mysql mais pas négative
je veux décrémenter une valeur quand l'utilisateur l'efface dans php et mysql. Je veux vérifier pour ne pas aller en dessous de 0. Si la valeur est 0 alors ne pas décrément .
mysql_query("UPDATE table SET field = field - 1 WHERE id = $number");
si le champ est 0 alors ne faites rien
6 réponses
ajouter une autre condition pour mettre à jour seulement si le field
est plus grand 0
UPDATE table
SET field = field - 1
WHERE id = $number
and field > 0
vous pouvez empêcher la nouvelle valeur de tomber sous zéro en utilisant GREATEST()
. Si la valeur descend en dessous de zéro, zéro sera toujours plus grand que votre valeur calculée, empêchant ainsi toute valeur au-dessous de zéro pour être utilisé.
UPDATE table
SET field = GREATEST(0, field - 1)
WHERE id = $number
et sur une note latérale: S'il vous plaît ne pas utiliser mysql_*
fonctions plus. Ils sont dépréciés et seront éventuellement supprimés de PHP. Use PDO ou MySQLi plutôt.
l'option utilisant GREATEST ne fonctionnera pas dans les nouvelles versions MySQL, et la réponse acceptée peut être inutilisable si vous voulez mettre à jour plusieurs champs au lieu d'un seul. Ma solution pour ce problème est d'utiliser si:
UPDATE table
SET field = IF(field > 0, field - 1, 0)
WHERE id = $number
UPDATE table SET field = case when (field - 1) >0 then (field - 1)
else field end
WHERE id = $number
UPDATE `table_name` SET field = field-1 WHERE `id` = '".$id."' AND field > 0
Note: le type de données du champ doit être un entier.