我试图只将那些记录插入#AlistDealNames表中,其中DealName存在于#DistDeal表中但不存在于#AltDealNames表中。为此,我试着不存在条款。但它没有按预期工作。查询只是将记录转储到#AltDealNames表中。
insert into #AltDealNames
select d.DealName, d.ManagerScrubbed, d.BbgDealName, t.TrancheName, t.StreetCusip, t.ISIN, t.BbgTrancheName
from metric..Deal d join metric..Tranche t on d.DealName = t.DealName
where not exists(select 1 from #DistDeal dd join #AltDealNames ad on ad.DealName = dd.DealName)
请在构建查询时帮助我知道我是否做错了什么。
答案 0 :(得分:0)
如果我理解正确,您需要exists
的{{1}}条款和#DistDeal
的{{1}}条:
not exists
注意:使用#AltDealNames
时,应始终包含列名列表。
答案 1 :(得分:0)
根据优化程序如何设置实际物理查询,在此查询插入任何内容之前,可能首先运行“where not exists”子句。也就是说,它只会过滤掉之前查询中的#AltDealNames中的值。
如果你试图避免插入#DistDeal中的DealName值,那么也许你想要:
insert into #AltDealNames
select d.DealName, d.ManagerScrubbed, d.BbgDealName, t.TrancheName,
t.StreetCusip, t.ISIN, t.BbgTrancheName
from metric..Deal d
join metric..Tranche t on d.DealName = t.DealName
where not exists(select 1 from #DistDeal dd
where d.DealName = dd.DealName) -- Changed line