我有一个带有用户表的mysql,其中的调查表答案按位保存。如何找到按位参考最常见或最不常见的用户?
+------+---------+--+
| User | Answers | |
+------+---------+--+
| A | 1 | |
| B | 5 | |
| C | 10 | |
+------+---------+--+
答案 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
子句以仅得到最前面的结果,但是当然,它不会告诉您是否有多个相同的位数匹配的最上面的结果。