MySQL 按位比较

MySQL bitwise comparison

提问人:PalleKuling 提问时间:11/6/2019 更新时间:11/6/2019 访问量:73

问:

我有带有一个用户表的 mysql,其中包含以按位方式保存的民意调查的答案。如何通过按位引用找到具有最常见或最不常见答案的用户?

+------+---------+--+
| User | Answers |  |
+------+---------+--+
| A    |       1 |  |
| B    |       5 |  |
| C    |      10 |  |
+------+---------+--+
MySQL 比较 位操作

评论

0赞 robsiemb 11/6/2019
您能否根据此数据提供您正在寻找的示例输出?
0赞 Shadow 11/6/2019
我不会在mysql中这样做,因为您需要将每个用户与其他用户进行比较才能获得答案。

答:

0赞 robsiemb 11/6/2019 #1

假设“按位引用”,您的意思是您有另一个值,该值是您尝试与列匹配的位掩码,这样的东西应该为您完成。在本例中,我使用“4”作为引用位掩码和表的名称。AnswersmyTable

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

这将返回:

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

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