MySQL:切换int字段值的简单方法

fms*_*msf 45 mysql

我知道如何做到这一点,但我想我会用双重选择过度复杂化等等.

你怎么能这样做(在伪sql中的例子)

UPDATE some_table SET an_int_value = (an_int_value==1 ? 0 : 1);
Run Code Online (Sandbox Code Playgroud)

由于某些其他功能,它必须是int值,但是如何以简单的方式执行?

FDi*_*isk 103

UPDATE table SET field = 1 - field
Run Code Online (Sandbox Code Playgroud)

  • 它与使用`IF`之间的区别在于它与`NULL`的行为方式.使用`IF`空值设置为`1`,使用它们保持`NULL`.真的取决于你想要的. (4认同)
  • 非常简单的数学逻辑,既美妙又优雅.太棒了,给你帽子! (2认同)

Gla*_*vić 15

UPDATE some_table SET an_int_value = IF(an_int_value=1, 0, 1)
Run Code Online (Sandbox Code Playgroud)


Eri*_*lje 9

在这种情况下,您可以使用XOR类型操作:

UPDATE some_table SET an_int_value = an_int_value XOR 1
Run Code Online (Sandbox Code Playgroud)

这假设an_int_value总是为1或0.