如何在oracle中实现'Only in'条件?

如何在oracle中实现'Only in'条件?如何在oracle中实现'Only in'条件?

我有两个表'PlanPlanSet'和'ExcludedPlans'。 PlanPlanSet包含与每个计划关联的计划和计划集。我想从计划ONLY IN ExcludedPlans中的PlanPlanSet获取所有记录。

PlanPlanSet表

Plan1 - Planset1 

Plan2 - Planset2

Plan3 - Planset3

Plan4 - Planset1

Plan5 - Planset5

ExcludedPlans表

Plan1 

Plan2

这里Planset1包含计划1和Plan4,并Planset2只包含计划2。因此Planset1不应排除,Planset2应排除在外。

喜欢的东西,

select pps.planset 

from PlanPlanSet pps

where pps.planNumber only in (select ex.planNumber

from ExcludedPlan ex);

回答:

你想PLANSETS中的每一个计划都在排除计划列表中。

关于这个关系的思考,你需要将这两张表连在一起,并发现每一面的计划数量是相同的。这意味着我们必须允许它们有不同的意思,表示左外连接。

select p.planset 

from plansets p

left outer join excludedplans e

on p.plan = e.plan

group by p.planset

having count(p.plan) = count(e.plan)

这个假设PLANSETS是PLANSET并计划唯一的,并且EXCLUDEDPLANS是计划唯一的。如果这个假设是不正确,那么你就需要count(distinct ...

如果你想从PLANSETS那么逻辑可投入的解析函数的所有数据

select * 

from (select p.*

, count(p.plan) over (partition by p.planset) as planset_ct

, count(e.plan) over (partition by p.planset) as excluded_ct

from plansets p

left outer join excludedplans e

on p.plan = e.plan

)

where planset_ct = excluded_ct

回答:

据说这是为了找到只有这样plansets其中的所有计划都存在于ExcludedPlans表。如果需要此类计划集的所有行,则省略第一行中的独特行,并添加所需的任何列。

Select distinct planset 

From PlanPlanSet ps1

Where

exists

(

Select selected.planset

From

(

Select ps2.planset, count(*) ct, sum(decode(ep2.plan, null, 0, 1)) present

From PlanPlanSet ps2

Left join ExcludedPlans ep2 on ep2.plan = ps2.plan

Group by ps2.planset

) selected

Where selected.ct = selected.present and ps1.planset = selected.planset

)

如果相反只有这样plansets这并不是所有的计划都出现在ExcludedPlans表应该被选中,然后更改子查询的WHERE条件selected.all <> selected.present

回答:

该查询返回PlanPlanSet这些都是记录套仅排除计划:

select * from PlanPlanSet pss 

where not exists

(select planname from planPlanSet x

where x.setname = pss.setname

minus

select planname from ExcludedPlans)

/

减号来产生一组从不在底部子查询存在顶子查询的记录。当结果为空集时,计划集仅包含排除的计划。 MINUS不是一个非常快速的操作,所以如果你有大量的记录要处理,这可能不是最好的方法。但是,它具有检索PlanPlanSet列的优势,而不仅仅是setname

LiveSQL demo.

以上是 如何在oracle中实现'Only in'条件? 的全部内容, 来源链接: utcz.com/qa/265475.html

回到顶部