如何使用SQL查询获取benefitcodeid=39未覆盖planid的报表
查询未被benefitcodeid=39覆盖的planid报表的SQL写法
方案1:使用NOT EXISTS(性能更优,优先推荐)
SELECT * FROM plans p WHERE NOT EXISTS ( SELECT 1 FROM plan_benefitcode b WHERE b.planid = p.planid AND b.benefitcodeid = 39 )
逻辑说明:遍历所有计划记录,只要某条计划在plan_benefitcode关联表中没有对应benefitcodeid=39的绑定记录,就会被筛选出来。
方案2:使用LEFT JOIN空值匹配
SELECT p.* FROM plans p LEFT JOIN plan_benefitcode b ON b.planid = p.planid AND b.benefitcodeid = 39 WHERE b.planid IS NULL
逻辑说明:先左连接绑定了benefitcodeid=39的计划关联记录,关联结果为空的计划就是未被覆盖的计划。
内容的提问来源于stack exchange,提问作者Grace Chigbo
相关产品推荐
相关产品推荐

