我一直在追寻这个。我有一个表(在本例中保持简单)。
LogID (Primary Key)
UserID (Foreign Key)
Skipped (Tiny Int, default 0) can be 1 or 0
这是一对多关系,该表是此连接中的“多”
用户,即:John Smith,其 UserID 可能为 10。根据特定记录的实例,每条记录都可以有 Skipped = 1 或 Skipped = 0。
这是数据的简单分割
1 | 10 | 1
2 | 10 | 0
3 | 10 | 1
4 | 10 | 0
所以该用户出现了 4 次。 2 条记录显示已跳过 (1),2 条记录显示未跳过 (0)。
我需要创建一个查询来查找 100% 跳过的用户。所以一个人看起来像这样:
1 | 11 | 1
2 | 11 | 1
3 | 11 | 1
4 | 11 | 1
如果 Skipped 为 0,我不想要该用户。用户可以混合(跳过 yes 和 no),所以我需要找到一个仅 100% 跳过的用户。我需要按 UserID 对其进行分组,或者至少在找到时对其进行 DISTINCT 处理,这样我就可以得到单个用户(没有重复)。为了得到这个结果,我一直在研究 GROUP BY、HAVINGS、COUNT 和 SUM,但我一直陷入查询的 100% 部分。
我使用的是 MySQL 5.1.56
非常感谢任何建议。
谢谢! 汉字
最佳答案
select userid
from table
group by userid
having count(userid) = sum(if(skipped = 1,1,0))
关于mysql - 尝试根据一组记录查找一条记录,其中 mysql 中存在 100% 匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8750501/