MySQL按位比较

时间:2019-11-06 12:52:58

标签: mysql comparison bit-manipulation

我有一个带有用户表的mysql,其中的调查表答案按位保存。如何找到按位参考最常见或最不常见的用户?

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

1 个答案:

答案 0 :(得分:0)

假设“按位引用”是指您具有另一个要与Answers列进行匹配的位掩码的值,类似的事情应该为您完成。在这种情况下,我使用“ 4”作为参考位掩码,并使用myTable作为表的名称。.

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

这将返回:

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

您还可以添加一个LIMIT 1子句以仅得到最前面的结果,但是当然,它不会告诉您是否有多个相同的位数匹配的最上面的结果。