我知道如何做到这一点,但我想我会用双重选择过度复杂化等等。
你怎么做(伪sql中的例子)
UPDATE some_table SET an_int_value = (an_int_value==1 ? 0 : 1);
由于某些其他功能,它必须是一个int值,但是你如何以一种简单的方式做到这一点?
答案 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');