我想要一个客户列表以及他们从项目A,B,C,D,E中购买的所有商品
但是......
仅适用于已购买C或E的客户。
现在我正在考虑像这样的PSEUDO-CODE:
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)
)
我的实际查询要复杂得多,运行时间很长,并且包含多个表中的客户信息以及分布在多个表中的购买...我想知道两次运行Select语句是否效率低 - 以及我是否可以执行这更有效率?
答案 0 :(得分:0)
答案取决于数据的复杂性,格式和数量
有时您只需将IN
替换为EXISTS
另一种方法是使用temp
表 - 填充使用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))