SQL查询 - 从T1中选择值,其中第二个值在T2中完全满足

时间:2014-06-11 17:26:51

标签: sql

我可以在一个带有临时表和诸如此类的丑陋存储过程中执行此操作,但我知道有经验的开发人员可以比我想出的更优雅。事实上,我根本不需要调用sproc,但只需要一个查询就能满足我的需求。

我正在使用两张桌子:

  • T1 BillingDirectivesNeeded
  • T2 BillingDirectives。

T1有两个与此任务相关的字段 -

  • PKey
  • WBS1。

每个WBS1都会有许多PKeys。

T2只有一个感兴趣的领域

  • PKEY。

我正在尝试解决的任务是在我启用导入之前,在T1中创建一个WBS1列表,其中包含所有需要的指令。

我们只想在T2中找到该WBS1的所有PKeys时导入WBS1。如果没有,我会让他们变灰。

我已经尝试了十几种不同的方法来在过去的几个小时内实现这一点,而且我似乎有一种精神障碍。伪代码看起来像这样:

select T1.WBS1 from BillingDirectiveNeeded T1 
where [all the T1.PKeys for T1.WBS1 can be found in BillingDirectives T2]

2 个答案:

答案 0 :(得分:2)

您可以尝试使用Where Exists子句:

Select      T1.WBS1 
From        BillingDirectiveNeeded  T1 
Where Exists
(
    Select  1
    From    BillingDirectives   T2
    Where   T2.PKey = T1.PKey
)

答案 1 :(得分:1)

select DISTINCT T1.WBS1 from BillingDirectiveNeeded T1 where  T1.PKey in (SELECT T2.PKey FROM BillingDirectives T2)