mysql - 尝试根据一组记录查找一条记录,其中 mysql 中存在 100% 匹配

标签 mysql sql

我一直在追寻这个。我有一个表(在本例中保持简单)。

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/

相关文章:

sql - 高效的多重分组

sql - CosmosDb 计算不同元素的数量

mysql插入唯一的行,除了键

php - 插入选择 - 不起作用

mysql - 多个表还是多个数据库?

MySQL 许可

mysql - 在数据库列上搜索值,在有空格的地方拆分该值

mysql - Elasticsearch SQL 等效项

sql - 将不规则的时间序列拆分为规则的月平均值 - R

mysql - 如何通过MySQL Workbench生成数据库关系图?