这就是事情 - 我需要根据字段组过滤记录。原型看起来像这样:
select distinct ID, Name from Item i
inner join (select ItemID from ItemD where ItemDID in (146,147)) idd1 on i.ItemID = idd1.ItemID
inner join (select ItemID from ItemD where ItemDID in (7641, 7648)) idd2 on i.ItemID = idd2.ItemID
(重复内连接次数)
我知道我可以创建一个使用sp_executesql的存储过程并从我的应用程序中提取那些内连接,但我不禁想知道是否有更好的解决方案?
答案 0 :(得分:2)
您可以使用临时表,可能比很多连接更快:
Conditions: GroupID, ItemDID
填写如下:
1, 146
1, 147
2, 7641
2, 7648
然后要求满足每个条件组:
select ID
, Name
from Item i
where not exists
(
select *
from Conditions c
left join
ItemID idd
on idd.ItemDID = c.ItemDID
and idd.ItemID = i.ItemID
group by
c.GroupID
having count(idd.ItemDTD) = 0
)
(查询没有经过测试;品种很多。)