如何移除或筛选返回Yes_no列不含'Y'的ID对应的全部数据表记录
解法1:NOT EXISTS子查询(推荐)
SELECT t1.ID, t1.section, t1.Yes_no FROM your_table t1 WHERE NOT EXISTS ( SELECT 1 FROM your_table t2 WHERE t2.ID = t1.ID AND t2.Yes_no = 'Y' );
逻辑:子查询校验当前ID是否存在Yes_no = 'Y'的记录,不存在时就保留该ID的所有行。注意将语句中的your_table替换为你的实际表名。
解法2:分组聚合后关联查询
SELECT t1.* FROM your_table t1 JOIN ( SELECT ID FROM your_table GROUP BY ID HAVING MAX(Yes_no) = 'N' ) t2 ON t1.ID = t2.ID;
逻辑:按ID分组后,如果分组内存在Y值,MAX(Yes_no)的计算结果就为Y,因此筛选出聚合结果为N的ID后关联原表,即可得到对应所有记录。
执行后输出结果如下:
| ID | section | Yes_no |
|---|---|---|
| EE_2 | sec_21 | N |
内容的提问来源于stack exchange,提问作者sTonystork
相关产品推荐
相关产品推荐

