Non hai bisogno di citazioni.
UPDATE my_table SET my_field = my_field - 1 WHERE `other` = '123'
Per capire, è come una classica affettazione in qualsiasi lingua:"Voglio my_field
essendo uguale a my_field
(il valore corrente) meno 1
.
Se metti le virgolette, significa "Voglio my_field
essendo uguale alla stringa:
'my_field-1'
(per la tua prima domanda)'my_field' - 1
(che non significa nulla, almeno per me:qual è il risultato di una stringa meno un intero?)'-1'
, che verrà convertito in -1 se il tuo campo ha il tipo con segno INTEGER.
In alcuni casi (se hai spazi o caratteri speciali se il nome del tuo campo), puoi racchiudere il nome del campo con `backtick`:
UPDATE my_table SET `my_field` = `my_field` - 1 WHERE other = '123'