MySQL如何筛选所有结果一致/不一致的测试ID
MySQL筛选同一测试ID下结果全匹配/不全匹配的条目
嘿,这两个查询需求很常见,我来给你清晰的解决方案,直接对应你给出的示例场景:
1. 筛选同一测试ID下所有结果均匹配的条目(示例中ID 1、3)
我们需要找出那些同一测试ID对应的所有result值完全相同的组。这里有两种简洁的实现方式:
方法一:统计唯一结果数量
通过分组后,检查该组内不同result的数量是否为1——如果是,说明所有结果都匹配:
SELECT id FROM your_table_name GROUP BY id HAVING COUNT(DISTINCT result) = 1;
方法二:对比最小/最大结果值
如果同一组内所有result都相同,那么组内的最小值和最大值必然相等,用这个逻辑也能实现:
SELECT id FROM your_table_name GROUP BY id HAVING MIN(result) = MAX(result);
代入你的示例数据,这两个查询都会返回id为1和3的结果。
2. 筛选同一测试ID下并非所有结果都匹配的条目(示例中ID 2)
这个需求正好和上面相反,我们要找同一测试ID下存在不同result值的组,同样有两种写法:
方法一:统计唯一结果数量大于1
SELECT id FROM your_table_name GROUP BY id HAVING COUNT(DISTINCT result) > 1;
方法二:对比最小/最大结果值不相等
SELECT id FROM your_table_name GROUP BY id HAVING MIN(result) != MAX(result);
代入示例数据,这两个查询都会返回id为2的结果。
💡 小提示:记得把SQL里的your_table_name替换成你实际使用的表名哦!
内容的提问来源于stack exchange,提问作者Adventurous
相关产品推荐
相关产品推荐

