Heim > Fragen und Antworten > Hauptteil
Ich möchte den in einem Feld (Ganzzahl oder Dropdown) enthaltenen Wert um 1 verringern. Ich habe diese drei Abfragen ausprobiert und keine davon hat wie erwartet funktioniert:
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'
Ich habe hier und bei Google gesucht, aber alle Lösungen, die ich gefunden habe, waren ähnlich. Irgendeine Idee, warum das bei mir nicht funktioniert?
P粉2686548732023-10-26 10:14:06
尝试从列名称中删除单引号,否则它将被视为字符串“my_field-1”或在列名称周围使用反引号
UPDATE my_table SET my_field = my_field - 1 WHERE `other` = '123'
或
UPDATE my_table SET `my_field` = `my_field` - 1 WHERE `other` = '123'
P粉7627302052023-10-26 09:15:35
您不需要任何引号。
UPDATE my_table SET my_field = my_field - 1 WHERE `other` = '123'
要理解,这就像任何语言中的经典情感:“我希望 my_field
等于 my_field
(当前值)减去 1
.
如果加引号,则表示“我希望 my_field
等于字符串:
'my_field-1'
(用于您的第一个查询)'my_field' - 1
(这没有任何意义,至少对我来说:字符串减去整数的结果是多少?)'-1'
,如果您的字段具有 INTEGER 符号类型,则该值将转换为 -1。在某些情况下(如果您的字段名称中有空格或特殊字符),您可以用“反引号”包围字段名称:
UPDATE my_table SET `my_field` = `my_field` - 1 WHERE other = '123'