mysql - MySQL按位比较
问题描述
我有一个带有用户表的 mysql,其中包含按位保存的民意调查答案。如何按位找到具有最多或最不常见答案的用户?
+------+---------+--+
| User | Answers | |
+------+---------+--+
| A | 1 | |
| B | 5 | |
| C | 10 | |
+------+---------+--+
解决方案
假设通过“按位引用”,您的意思是您有另一个值,它是您尝试与列匹配的位掩码,Answers
这样的事情应该为您做。在这种情况下,我使用 '4' 作为参考位掩码和myTable
表的名称..
SELECT User, BIT_COUNT(Answers & 4) AS MatchedBits FROM myTable ORDER BY MatchedBits DESC
这将返回:
+--------+-------------+ | 用户 | 匹配位 | +--------+-------------+ | 乙| 1 | | 一个 | 0 | | C | 0 | +--------+-------------+
您还可以添加一个LIMIT 1
子句来仅获得最高结果,但当然这不会告诉您是否存在多个具有相同位数匹配的最高结果。
推荐阅读
- javascript - 如何在 node.js 的服务器端使用动画补间库?
- android - Firebase Query 获取随机数据
- javascript - 协助在我的 IVR 中识别此 Javascript“脚本”对象
- powershell - 从 Get-ADObject 服务器超时捕获错误
- c# - Linq 子对象属性按父属性分组的总和
- javascript - 我应该使用什么加密策略
- php - 从大文件中删除重复的行
- python - 一行中的多个变量赋值
- swift - 使用 Core Data 动态显示嵌套列表时遇到问题
- angular - Angular:如何根据某些属性的值设置样式