MySQL中检查Type=X且frq=8的相同Value3对应唯一ID的一致性
解决方案:验证符合条件的Value3是否对应唯一T2 ID
针对你的需求——检查所有Type='X'且frq=8的记录中,每个Value3对应的去重T2 ID计数是否为1,我们可以通过MySQL的分组统计功能快速实现,具体方案如下:
1. 核心查询语句
找出不符合要求的Value3(存在多个T2 ID的情况)
SELECT Value3, COUNT(DISTINCT `T2 ID`) AS unique_t2_id_count, GROUP_CONCAT(DISTINCT `T2 ID`) AS associated_t2_ids FROM your_table_name -- 替换成你的实际表名 WHERE Type = 'X' AND frq = 8 GROUP BY Value3 HAVING COUNT(DISTINCT `T2 ID`) != 1;
查看所有符合条件的Value3的对应情况
如果需要确认全部符合条件的Value3的T2 ID关联情况,可以去掉HAVING子句:
SELECT Value3, COUNT(DISTINCT `T2 ID`) AS unique_t2_id_count, GROUP_CONCAT(DISTINCT `T2 ID`) AS associated_t2_ids FROM your_table_name -- 替换成你的实际表名 WHERE Type = 'X' AND frq = 8 GROUP BY Value3;
2. 语句解释
- WHERE子句:先筛选出
Type='X'且frq=8的目标记录,缩小统计范围 - GROUP BY Value3:将相同
Value3的记录归为一组,便于按值统计 - COUNT(DISTINCT `T2 ID`):统计每个
Value3对应的不同T2 ID数量,确保去重计数准确 - GROUP_CONCAT:可选字段,直观展示当前
Value3关联的所有T2 ID,方便快速排查问题 - HAVING子句:过滤出
T2 ID计数不等于1的组,直接定位不符合要求的Value3
3. 结合你的样例数据验证
根据你提供的样例数据,符合Type='X'且frq=8的记录有3条:
L-1 AB-12 ARTY55A X [Null] 8 ARTY55A
L-5 AB-18 AURT10E X [Null] 8 AURT10E
L-6 AB-18 AURT10E X [Null] 8 AURT10E
运行第一个查询会得到结果:
| Value3 | unique_t2_id_count | associated_t2_ids |
|---|---|---|
| AURT10E | 2 | L-5,L-6 |
这说明AURT10E这个Value3对应了两个不同的T2 ID(L-5和L-6),不符合“对应唯一T2 ID”的要求;而ARTY55A对应唯一的T2 ID(L-1),是符合要求的。
内容的提问来源于stack exchange,提问作者Roy1245
相关产品推荐
相关产品推荐

