Nepotřebujete žádné uvozovky.
UPDATE my_table SET my_field = my_field - 1 WHERE `other` = '123'
Abychom pochopili, je to jako klasická afektovanost v jakémkoli jazyce:„Chci my_field
je rovno my_field
(aktuální hodnota) mínus 1
.
Pokud zadáte uvozovky, znamená to „chci my_field
je rovno řetězci:
'my_field-1'
(pro váš první dotaz)'my_field' - 1
(což nic neznamená, alespoň pro mě:jaký je výsledek řetězce mínus celé číslo?)'-1'
, která bude převedena na -1, pokud má vaše pole typ INTEGER se znaménkem.
V některých případech (pokud máte v názvu pole mezery nebo speciální znaky), můžete název pole obklopit `backticks`:
UPDATE my_table SET `my_field` = `my_field` - 1 WHERE other = '123'