MySQL 按位比较

MySQL bitwise comparison

我 mysql 与用户 table 进行了一次投票,其中的答案按位保存。如何使用参考按位找到答案最常见或最不常见的用户?

+------+---------+--+
| User | Answers |  |
+------+---------+--+
| A    |       1 |  |
| B    |       5 |  |
| C    |      10 |  |
+------+---------+--+

假设 'reference bitwise' 你的意思是你有另一个值是一个位掩码,你试图与 Answers 列匹配,这样的事情应该为你做。在本例中,我使用“4”作为参考位掩码,使用 myTable 作为您的 table..

的名称
SELECT User, BIT_COUNT(Answers & 4) AS MatchedBits FROM myTable ORDER BY MatchedBits DESC

这个returns:

+------+-------------+
| User | MatchedBits |
+------+-------------+
| B    |           1 |
| A    |           0 |
| C    |           0 |
+------+-------------+

您还可以添加一个 LIMIT 1 子句以仅获取最高结果,但当然这不会告诉您是否有多个最高结果具有相同的匹配位数。