如何查询tblA中涉及BMW 1 SERIES的事故对应的全部关联数据行
解决方案
你需要的是先筛选出所有涉及BMW 1 SERIES的事故唯一编号AccRef,再匹配原表输出这些AccRef对应的全部行,两种常见实现方式如下:
写法1:IN子查询(逻辑最直观,兼容性最好)
SELECT * FROM tblA WHERE AccRef IN ( -- 先查询所有包含BMW 1 SERIES的事故编号 SELECT DISTINCT AccRef FROM tblA WHERE 车型字段名 = 'BMW 1 SERIES' );
写法2:窗口函数(无需多层嵌套,适合多维度筛选场景)
SELECT AccRef, 车型字段名, 其他需要输出的字段 FROM ( SELECT *, -- 按事故编号分组,标记该事故是否包含BMW 1 SERIES MAX(CASE WHEN 车型字段名 = 'BMW 1 SERIES' THEN 1 ELSE 0 END) OVER(PARTITION BY AccRef) AS is_target_acc FROM tblA ) t WHERE is_target_acc = 1;
注意:请将上述语句中的
车型字段名替换为你表中实际存储车辆型号的字段名即可正常运行。数据量较大时可对AccRef、车型字段建立索引提升查询效率。
内容的提问来源于stack exchange,提问作者IronHide
相关产品推荐
相关产品推荐

