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

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

你怎么能做到这一点(例如伪sql)

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

由于其他一些function,它必须是一个int值,但是如何以一种简单的方式来实现呢?

 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

 UPDATE table SET field = 1 - field 
 UPDATE some_table SET an_int_value = IF(an_int_value=1, 0, 1) 

在这种情况下,您可以使用XORtypes操作:

 UPDATE some_table SET an_int_value = an_int_value XOR 1 

这是假设an_int_value将始终是1或0。

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

这个怎么样…我这样做…

 UPDATE tablename SET fieldname = not fieldname 

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

另外一个select:

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

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

UPDATE table SET int_value = BINARY(int_value = 1)

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