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))