Mysql查询:减少值1

时间:2014-02-16 16:10:09

标签: 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'

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

2 个答案:

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

  1. 'my_field-1'(第一次查询)
  2. 'my_field' - 1(这意味着什么,至少对我而言:字符串的结果减去一个整数?)
  3. '-1',如果您的字段具有INTEGER签名类型,则会转换为-1。
  4. 在某些情况下(如果您的字段名称有空格或特殊字符),您可以使用`backticks`包围字段名称:

    UPDATE my_table SET `my_field` = `my_field` - 1 WHERE  other = '123'