Sie brauchen keine Anführungszeichen.
UPDATE my_table SET my_field = my_field - 1 WHERE `other` = '123'
Um es zu verstehen, ist es wie eine klassische Affektiertheit in allen Sprachen:„Ich möchte my_field
gleich my_field
sein (der aktuelle Wert) minus 1
.
Wenn Sie Anführungszeichen setzen, bedeutet das:"Ich möchte my_field
gleich der Zeichenfolge:
'my_field-1'
(für Ihre erste Anfrage)'my_field' - 1
(was zumindest für mich nichts bedeutet:was ist das Ergebnis eines Strings minus einer Ganzzahl?)'-1'
, die in -1 konvertiert wird, wenn Ihr Feld den vorzeichenbehafteten Typ INTEGER hat.
In einigen Fällen (wenn Sie Leerzeichen oder Sonderzeichen in Ihrem Feldnamen haben) können Sie den Feldnamen mit `Backticks` umgeben:
UPDATE my_table SET `my_field` = `my_field` - 1 WHERE other = '123'