Maison > Questions et réponses > le corps du texte
Je souhaite décrémenter la valeur contenue dans un champ (entier ou déroulant) de 1. J'ai essayé ces 3 requêtes et aucune n'a fonctionné comme prévu :
UPDATE `my_table` SET `my_field` = 'my_field-1' WHERE `other` = '123' UPDATE `my_table` SET `my_field` = 'my_field' -1 WHERE `other` = '123' UPDATE `my_table` SET `my_field` = '-1' WHERE `other` = '123'
J'ai cherché ici et sur Google mais toutes les solutions que j'ai trouvées étaient similaires. Une idée de pourquoi cela ne fonctionne pas de mon côté ?
P粉2686548732023-10-26 10:14:06
Essayez de supprimer les guillemets simples du nom de la colonne, sinon il sera traité comme une chaîne "my_field-1" ou utilisez des guillemets autour du nom de la colonne
UPDATE my_table SET my_field = my_field - 1 WHERE `other` = '123'
ou
UPDATE my_table SET `my_field` = `my_field` - 1 WHERE `other` = '123'
P粉7627302052023-10-26 09:15:35
Vous n'avez besoin d'aucun devis.
UPDATE my_table SET my_field = my_field - 1 WHERE `other` = '123'
Pour comprendre, c'est comme une émotion classique dans n'importe quelle langue : « Je veux my_field
等于 my_field
(valeur actuelle) moins 1
.
S'il est cité, cela signifie "Je veux que my_field
my_field soit égal à la chaîne :
'my_field-1'
'my_field-1' (pour votre première requête) 'my_field' - 1
'my_field' - 1 (Cela n'a aucun sens, du moins pour moi : quel est le résultat de la soustraction d'un entier d'une chaîne ?) '-1'
'-1', si votre champ est de type symbolique INTEGER, la valeur sera convertie en -1. Dans certains cas (si le nom de votre champ contient des espaces ou des caractères spéciaux), vous pouvez entourer le nom du champ de « backticks » :
UPDATE my_table SET `my_field` = `my_field` - 1 WHERE other = '123'
大瓶可乐@php.cn2023-10-26 17:27:08
La méthode est d'une grande importance et le salaire réel ***gasa*** est donné