如何从临时表中检索多个值并将它们插入到另一个表中?
问题描述:
我有一个临时表具有以下值如何从临时表中检索多个值并将它们插入到另一个表中?
@TempTable
ID
1
2
在临时表中的每个ID我想要执行以下操作:
insert into ItemOrganisationSources
select ByLineID, <TempTable.ID>, SourceTypeID
from ItemOrganisationSources
where ItemOrganisationID in (
select ID from @TempTable)
答
你是否有一个临时这不是从你的代码清晰表(以'#'为前缀)或表变量(以您的示例为前缀)。无论哪种方式,您都可以像引用其他表一样引用临时表/变量。
表变量:
insert into ItemOrganisationSources
select i.ByLineID, t.ID, i.SourceTypeID
from ItemOrganisationSources AS i
inner join @TempTable AS t
on i.ID = t.ID --Plug in the appropriate field to join on here
where i.ItemOrganisationID in (
select ID from @itemOrganisationIDsToBeDuplicated)
临时表:
insert into ItemOrganisationSources
select i.ByLineID, t.ID, i.SourceTypeID
from ItemOrganisationSources AS i
inner join #TempTable AS t
on i.ID = t.ID --Plug in the appropriate field to join on here
where i.ItemOrganisationID in (
select ID from @itemOrganisationIDsToBeDuplicated)
再次阅读您的问题后,我不能完全肯定,如果你想加入你的临时表的其他数据,或者只是为临时表中的每个ID插入一次。如果是后者,这可能是一个罕见的使用了CROSS JOIN
:
insert into ItemOrganisationSources
select i.ByLineID, t.ID, i.SourceTypeID
from ItemOrganisationSources AS i
cross join #TempTable AS t --cross join instead of inner join
where i.ItemOrganisationID in (
select ID from @itemOrganisationIDsToBeDuplicated)
答
insert into ItemOrganisationSources
select ByLineID, TT.ID, SourceTypeID
from ItemOrganisationSources IO JOIN
@TempTable TT ON TT.ID = IO.ItemOrganisationID
你可以通过临时表中的记录通过使用游标循环。 – 2013-04-11 12:41:13
你能举一个你想要什么样的最终结果的例子吗?我以为我有这个答案,但现在我想我可能误解了你的问题。 – 2013-04-11 12:44:41
@VijaysingGusinge你应该避免游标,除非绝对必要,并首先在sql中首选基于集合的操作。 – Ryan 2013-04-11 12:45:25