我有数据从一个SQL查询是'fileUnavailable',需要插入到另一个表是'fileAvailable '。值是1或0,我需要做一个SQL插入。由于fileunavailable和fileAvailable是相反的,我需要将第一个值更改为1,如果它是0,则更改为0,如果它是1。最初,我想只是做一个if, else语句来改变值,但这似乎太庞大,似乎太简单了,没有一个方法已经。
我最好奇的是SQL是否有类似!(fileUnavailable)的东西,但适用于1和0,因为这些值在我的数据库中是整数。
伪:INSERT INTO table (fileAvailable) VALUES ( NOT($fileUnavailable));
使用ABS
的提示:
UPDATE table SET field = ABS(field - 1)
若field
为1
,则field - 1
为0
, abs(0)
仍为0
。
若field
为0
,则field - 1
为-1
, abs(-1)
为1
。
ABS()
手册页。
对于您在问题中提供的查询:
INSERT INTO table (fileAvailable) VALUES ( ABS($fileUnavailable - 1) );
我从另一个堆栈溢出问题中发现了这一点。
INSERT INTO `table` SET `my_bool` = NOT my_bool
在SQL中不使用SELECT