我希望将字段中包含的值减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'
Run Code Online (Sandbox Code Playgroud)
我在这里和谷歌搜索,但我发现的所有解决方案都是类似的.知道为什么这对我不起作用吗?
尝试这一个从列名中删除单引号,其他它将被视为字符串'my_field-1'或使用列名周围的反斜杠
UPDATE my_table SET my_field = my_field - 1 WHERE `other` = '123'
Run Code Online (Sandbox Code Playgroud)
要么
UPDATE my_table SET `my_field` = `my_field` - 1 WHERE `other` = '123'
Run Code Online (Sandbox Code Playgroud)
你不需要任何报价.
UPDATE my_table SET my_field = my_field - 1 WHERE `other` = '123'
Run Code Online (Sandbox Code Playgroud)
要理解,它就像任何语言中的经典做法:"我希望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'
Run Code Online (Sandbox Code Playgroud)