MySQL,一列多个BIT运算

MySQL, multiple BIT operations in one column

我有一个名为 settings 的列(类型:tinyint unsigned not null)。

包含用户设置位 (0/1)。

例如,当我想要更新 setting_1 时,我会这样做:

UPDATE `users` SET `settings`=`settings`|1

(将设置 1 设置为 1(真))。

但是,我如何对一列进行多次更新? 例如:

UPDATE `users`
SET
 `settings`=`settings`|1,
 `settings`=`settings`&~2,
 `settings`=`settings`|4
WHERE `user`='xyz';

有解释它的链接吗?

您可以一起执行所有操作,例如

update user 
set settings = settings|1&~2|4;

您也可以使用括号来限制范围。这是相同的 SQL Fiddle