T-SQL:试图两个查询合并成一个

问题描述:

我想从项目中A,B,C,d,ET-SQL:试图两个查询合并成一个

但是...

仅适用于客户和他们的所有交易的列表谁购买C或E.

现在我想的是这样的伪代码的客户:

Select Customer, Item From Purchases 
Where Items In (A, B, C, D, E) 
And Customer In 
(
Select Customer From Purchases 
Where Items In (C, E) 
) 

我实际的查询要复杂得多,需要长时间运行,包括从客户信息MUL tiple表和购买分布在多个表中......我想知道是否两次运行Select语句效率低下 - 我是否可以更有效地做到这一点?

答案取决于你的数据 的复杂性,格式和数量有时你可以通过EXISTS 的另一种方法是使用temp表只需更换IN - 填充使用的物品C,E为临时表,然后使用客户名单查询中的临时表

Select Customer, Item From Purchases p1 
Where p1.Items In (A, B, C, D, E) 
    and exists (
    select top 1 1 from Purchases p2 
     where p1.Customer = p2.Customer 
     and p2.Items in (C,E))