我在一个status
类型的表中有一个名为enum
的列,可以有1
或0
两个值。我想编写一个查询,它将自动检查Enum的当前值并更改为其他值。
例如,我在表格中有行:
id | name | status
-----+---------+---------
1 | Abc | 0
-----+---------+---------
2 | xyz | 1
现在我想编写一个mysql查询,我将id
行传递给更新,我将自动检查当前状态并将其更改为另一个。例如,如果我通过id=1
,它会自动检查状态列的当前值并将其更改为1
。同样,如果我通过id=2
,它会检查第2行的状态值并将其更改为0
。
答案 0 :(得分:1)
此处$id
是您的传递 ID。请注意,虽然bool
操作(例如status=!status
)是“漂亮的”,但以这种方式使用ENUM并不好。
UPDATE t SET status=IF(status='0', '1', '0') WHERE id=$id
另外,好的想法是将类型更改为TINYINT
,如果它只是存储0
和1
(那么status=!status
将是个好主意)