SQL: INSERT 1 if value=0 and 0 if value=1


SQL: INSERT 1 if value=0 and 0 if value=1

我有数据从一个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)

field1,则field - 10, abs(0)仍为0

field0,则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

将布尔值更新为与其相反的值