如何查询属于P2_04层级的cod_azienda并判断是否同时属于P2_03?
SQL查询实现层级存在性标记需求
可以通过子查询或EXISTS关键字来判断每个cod_azienda是否存在cod_azienda_gerarchia=P2_03的记录,以下是两种实用的实现方式:
方法一:使用EXISTS子查询
SELECT cod_azienda, CASE WHEN EXISTS ( SELECT 1 FROM 你的表名 t2 WHERE t2.cod_azienda = t1.cod_azienda AND t2.cod_azienda_gerarchia = 'P2_03' ) THEN 'Yes' ELSE 'No' END AS has_p2_03_record FROM 你的表名 t1 WHERE t1.cod_azienda_gerarchia = 'P2_04';
方法二:使用GROUP BY和条件聚合
SELECT cod_azienda, CASE WHEN MAX(CASE WHEN cod_azienda_gerarchia = 'P2_03' THEN 1 ELSE 0 END) = 1 THEN 'Yes' ELSE 'No' END AS has_p2_03_record FROM 你的表名 WHERE cod_azienda_gerarchia IN ('P2_04', 'P2_03') GROUP BY cod_azienda HAVING MAX(CASE WHEN cod_azienda_gerarchia = 'P2_04' THEN 1 ELSE 0 END) = 1;
说明
- 方法一逻辑直观,针对每条
P2_04层级的记录直接校验对应P2_03记录的存在性,适合中等数据量场景。 - 方法二通过单次表扫描+分组聚合完成计算,减少了子查询的重复调用,大数据量下性能更优。
- 记得将代码中的
你的表名替换为实际表名称。
内容的提问来源于stack exchange,提问作者Cristina Biagiotti
相关产品推荐
相关产品推荐

