我希望将字段中包含的值减1(整数或下拉)。我尝试了这3个查询,但没有一个按预期工作:
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'
我在这里和谷歌上搜索过,但我发现的所有解决方案都是类似的。知道为什么这对我不起作用吗?
答案 0 :(得分:7)
尝试这一个从列名中删除单引号,将其视为字符串'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'
答案 1 :(得分:6)
您不需要任何报价。
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。在某些情况下(如果您的字段名称有空格或特殊字符),您可以使用`backticks`包围字段名称:
UPDATE my_table SET `my_field` = `my_field` - 1 WHERE other = '123'