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

时间:2009-03-02 20:19:09

标签: mysql

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

你怎么做(伪sql中的例子)

UPDATE some_table SET an_int_value = (an_int_value==1 ? 0 : 1);

由于某些其他功能,它必须是一个int值,但是你如何以一种简单的方式做到这一点?

9 个答案:

答案 0 :(得分:100)

UPDATE table SET field = 1 - field

答案 1 :(得分:76)

UPDATE some_table SET an_int_value = IF(an_int_value=1, 0, 1);

http://dev.mysql.com/doc/refman/5.1/en/control-flow-functions.html#function_if

答案 2 :(得分:15)

UPDATE some_table SET an_int_value = IF(an_int_value=1, 0, 1)

答案 3 :(得分:9)

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

UPDATE some_table SET an_int_value = an_int_value XOR 1

这假设an_int_value总是为1或0。

答案 4 :(得分:4)

我可以看到所有有经验的人的答案,我也得到了他们的答案更新。

这个怎么样...... 我这样做......

UPDATE tablename SET fieldname = not fieldname

如果这不是一个可行的解决方案,请任何机构提出建议。关于执行速度或任何其他......说什么......事实......概念....

答案 5 :(得分:2)

另一种选择:

UPDATE some_table SET an_int_value = ABS(an_int_value - 1);

答案 6 :(得分:1)

如果您使用的是TINYINT(0和1),请执行简单的XOR(https://dev.mysql.com/doc/refman/8.0/en/logical-operators.html#operator_xor

UPDATE
    `some_table`
SET
    `an_int_value` = `an_int_value` ^ 1

测试:

选择0 ^ 1; / *返回1 * /

选择1 ^ 1; / *返回0 * /

答案 7 :(得分:0)

对于ENUM(0,1)字段,您可以使用...

UPDATE表SET int_value = BINARY(int_value = 1)

答案 8 :(得分:0)

对于ENUM(0,1) UPDATE some_table SET an_int_value = IF(an_int_value ='1','0','1');