Mysql查询:减少值1

dot*_*m22 4 mysql

我希望将字段中包含的值减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)

我在这里和谷歌搜索,但我发现的所有解决方案都是类似的.知道为什么这对我不起作用吗?

M K*_*aid 7

尝试这一个从列名中删除单引号,其他它将被视为字符串'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)


Max*_*ant 7

你不需要任何报价.

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等于字符串:

  1. 'my_field-1' (第一次查询)
  2. 'my_field' - 1 (这意味着什么,至少对我来说:字符串的结果减去整数是什么?)
  3. '-1',如果您的字段具有INTEGER签名类型,则将转换为-1.

在某些情况下(如果您的字段名称有空格或特殊字符),您可以使用`backticks`包围字段名称:

UPDATE my_table SET `my_field` = `my_field` - 1 WHERE  other = '123'
Run Code Online (Sandbox Code Playgroud)