SQL查询需求:获取On状态行及Ref未重复的OFF状态行
数据表查询实现方案
需求拆解
- 获取所有
status='On'的行 - 获取所有
status='OFF'且Ref未在上述On状态行中出现过的行
SQL 查询语句
-- 合并满足两个条件的结果集 SELECT Ref, status FROM your_table WHERE status = 'On' UNION SELECT Ref, status FROM your_table t_off WHERE status = 'OFF' AND NOT EXISTS ( -- 子查询获取所有处于On状态的Ref值 SELECT 1 FROM your_table t_on WHERE t_on.status = 'On' AND t_on.Ref = t_off.Ref );
说明
- 第一个查询块直接筛选出所有
status为On的记录 - 第二个查询块通过
NOT EXISTS子查询,排除掉那些Ref已经在On状态记录中出现过的OFF状态记录 - 如果确认数据中不会有重复记录,可以用
UNION ALL替代UNION,提升查询效率
内容的提问来源于stack exchange,提问作者andy
相关产品推荐
相关产品推荐

