如何在SQL查询中按script_type筛选指定case_id的目标行?
解决多Case_ID的SQL精准筛选需求
嘿,针对你这个SQL筛选的需求,我给你整理了一个精准匹配的查询语句,完全符合你描述的规则!
最终查询语句
SELECT DISTINCT e.case_id, e.case_name, s.script_name, s.script_type, e.Result FROM executions_table e LEFT OUTER JOIN scripts_table s ON s.Case_ID = e.case_id WHERE -- 锁定所有11开头的目标Case_ID e.case_id LIKE '11%' -- 仅保留Result为passed的记录 AND e.Result = 'passed' -- *核心规则:分Case_ID设置script_type筛选条件* AND ( -- 对111、113,只选automation类型的脚本 (e.case_id IN ('111', '113') AND s.script_type = 'automation') -- 对112,只选manual类型的脚本 OR (e.case_id = '112' AND s.script_type = 'manual') );
逻辑拆解
- 首先用
e.case_id LIKE '11%'锁定你关注的所有Case_ID范围; - 加上
e.Result = 'passed'过滤掉非通过的记录,确保只选符合结果要求的行; - 用括号包裹的OR分组条件精准匹配不同Case_ID的script_type要求:
- 对于有两条记录的111和113,只保留
script_type = 'automation'的行; - 对于仅存在manual类型的112,直接匹配
script_type = 'manual'的行;
- 对于有两条记录的111和113,只保留
- 保留你原始查询中的
DISTINCT关键字,避免出现重复记录。
如果后续需要扩展更多Case_ID的筛选规则,只需要在OR条件块里新增对应的分组即可,非常灵活。
内容的提问来源于stack exchange,提问作者Coco
相关产品推荐
相关产品推荐

