Vous n'avez pas besoin de devis.
UPDATE my_table SET my_field = my_field - 1 WHERE `other` = '123'
Pour comprendre, c'est comme une affectation classique dans toutes les langues :"Je veux my_field
étant égal à my_field
(la valeur actuelle) moins 1
.
Si vous mettez des guillemets, cela signifie "Je veux my_field
étant égal à la chaîne :
'my_field-1'
(pour votre première requête)'my_field' - 1
(ce qui ne veut rien dire, du moins pour moi :qu'est-ce que le résultat d'une chaîne moins un entier ?)'-1'
, qui sera converti en -1 si votre champ a le type signé INTEGER.
Dans certains cas (si vous avez des espaces ou des caractères spéciaux dans le nom de votre champ), vous pouvez entourer le nom du champ de "backticks" :
UPDATE my_table SET `my_field` = `my_field` - 1 WHERE other = '123'