如何编写SQL查询提取col2仅含'EMP'无其他值的对应col1记录
实现方案
你可以通过分组后加HAVING条件过滤的方式实现需求,以下提供两种兼容性强的通用写法:
写法1(适配所有主流数据库,逻辑简洁)
SELECT col1 FROM 你的表名 -- 替换为实际表名 GROUP BY col1 HAVING COUNT(DISTINCT col2) = 1 AND MAX(col2) = 'EMP';
逻辑说明:
COUNT(DISTINCT col2) = 1保证同一个col1分组下,col2只有唯一的取值MAX(col2) = 'EMP'保证这个唯一的取值就是'EMP',排除其他单一值的分组(比如示例里的Date3)
写法2(灵活度更高,适合后续规则调整)
SELECT col1 FROM 你的表名 -- 替换为实际表名 GROUP BY col1 HAVING SUM(CASE WHEN col2 != 'EMP' THEN 1 ELSE 0 END) = 0 AND SUM(CASE WHEN col2 = 'EMP' THEN 1 ELSE 0 END) >= 1;
逻辑说明:
- 第一个条件统计分组内非
'EMP'的记录数,等于0说明没有其他取值 - 第二个条件保证分组内至少存在一条
'EMP'记录,避免返回空分组
以上两种写法针对你提供的示例数据,返回结果都是DATE 2,符合要求。
内容的提问来源于stack exchange,提问作者usha duddu
相关产品推荐
相关产品推荐

