Du behöver inga offerter.
UPDATE my_table SET my_field = my_field - 1 WHERE `other` = '123'
För att förstå är det som en klassisk tillgivenhet på alla språk:"Jag vill ha my_field
är lika med my_field
(det aktuella värdet) minus 1
.
Om du sätter citattecken betyder det "Jag vill ha my_field
är lika med strängen:
'my_field-1'
(för din första fråga)'my_field' - 1
(vilket inte betyder något, åtminstone för mig:vad blir resultatet av en sträng minus ett heltal?)'-1'
, som kommer att konverteras till -1 om ditt fält har typen INTEGER-signerad.
I vissa fall (om du har mellanslag eller specialtecken om ditt fältnamn) kan du omge fältnamnet med "backticks":
UPDATE my_table SET `my_field` = `my_field` - 1 WHERE other = '123'