2

我有一个以二进制形式保存用户偏好的数据库。

Chips = 1;
Pizza = 2;
Chinese = 4;

例如,如果一个用户喜欢薯条,那么他们的偏好是1。如果他们喜欢披萨,他们的偏好是2。如果两者都喜欢,他们的偏好是3。如果他们喜欢中餐和薯条,但不喜欢披萨,那么他们的偏好将是 5。

我需要创建一个 mysql 查询,我可以在其中选择所有不喜欢 Pizza 的用户。我试图解决这个问题,但我发现缺少使用 bit 和 where 子句的文档:

从逻辑上讲,这对我来说是有道理的,但这是不对的:

SELECT * FROM `User` WHERE BIT_AND(preferences,2) != 2;
4

1 回答 1

4
SELECT * FROM `User` 
WHERE preferences & 2 = 0

资源

SQLFiddle 演示

于 2013-11-04T16:26:21.870 回答