MySQL中有没有办法用一个查询来反转一个布尔字段?

ale*_*lex 23 php mysql

我的表格中有一栏名为'授权'.它的默认值为0.当用户被授权时,需要将其更改为1,但必须能够将其重置为0.我知道我可以通过2个查询轻松完成此操作:

$authorised = Db::query('SELECT authorised FROM users WHERE id=2');

$newAuthValue = ($authorised['authorised']) ? 0 : 1;

Db::query('UPDATE users SET authorised=' . $newAuthValue . ' WHERE id=2');
Run Code Online (Sandbox Code Playgroud)

我想知道的是,有一种方法可以用一个查询来做到这一点吗?要反转布尔值?

Ale*_*all 32

UPDATE `users` SET `authorised` = NOT `authorised` WHERE id = 2
Run Code Online (Sandbox Code Playgroud)

此查询也可用于否定该字段,并且更符合布尔语法.

  • SET 授权 = !authorized (3认同)

nic*_*ckf 30

UPDATE users SET `authorised` = IF (`authorised`, 0, 1)
Run Code Online (Sandbox Code Playgroud)

  • SET`authorised` = NOT`authorised` (3认同)