求SQL查询语句:筛选含111但不含101的同Data值记录
解决方案
假设你的数据表名为your_table,包含Data和value两个字段(可根据实际字段名修改),以下两种方式可实现需求:
方法一:子查询排除法
SELECT * FROM your_table WHERE Data IN ( SELECT Data FROM your_table WHERE value = 111 ) AND Data NOT IN ( SELECT Data FROM your_table WHERE value = 101 );
方法二:分组统计筛选法
SELECT t.* FROM your_table t JOIN ( SELECT Data FROM your_table GROUP BY Data HAVING SUM(CASE WHEN value = 111 THEN 1 ELSE 0 END) > 0 AND SUM(CASE WHEN value = 101 THEN 1 ELSE 0 END) = 0 ) filtered_data ON t.Data = filtered_data.Data;
简要说明
- 方法一先定位所有包含111的
Data,再排除掉包含101的Data,最终取出符合要求的记录。 - 方法二通过分组统计每个
Data下111和101的出现次数,直接筛选出有111且无101的Data,再关联原表获取对应记录。
内容的提问来源于stack exchange,提问作者NewLearner
相关产品推荐
相关产品推荐

