我有一个状态表,另一个表中包含其他数据。我的对象ID是状态表中的PK,所以我需要将它们插入每个新行的附加数据表中。将输出ID插入到另一个表中
我需要插入一个新行到我的statusTable为每个新的列表,只包含常量。
declare @temp TABLE(listingID int)
insert into statusTable(status, date)
output Inserted.listingID into @temp
select 1, getdate()
from anotherImportedTable
这让我有足够的新的商品ID使用。
我现在需要实际的上市数据插入到另一个表中,每一行映射到这些listingIDs之一 -
insert into listingExtraData(listingID, data)
select t.listingID, a.data
from @temp t, anotherImportedTable a
现在,这显然是行不通的,因为otherDataTable和@temp的ID是无关的...所以我得到太多插入的行。
如何将anotherImportedTable
中的每一行插入listingExtraData
以及唯一新创建的listingID
?我可能会触发一些更多的SQL在我做第一块sql中的output
?
编辑:感谢您的输入到目前为止,这里就是表的样子:
anotherImportedTable:
data
statusTable:
listingID (pk), status, date
listingExtraDa TA:
data, listingID
你看,我只希望在anotherImportedTable
创建一个进入statusTable
每行,然后把一个listingID
与行从anotherImportedTable
到listingExtraData
......我在想,我可能要求助于游标?
第二个表格中的内容告诉它要将其与哪个记录相关联?请更具体地了解第二张桌子的结构和用途。顺便说一句,从不使用隐式联接。你所拥有的是一个交叉连接,它把第一个表的每个记录与第二个表的第二个记录关联起来。即使你想这样做,最好使用明确的语法,以便维护人员知道你的意图,交叉连接不是偶然事件。 – HLGEM 2010-11-15 18:02:25
@HLGEM我完全同意,它有点乱,所以我最终在这里:)感谢您的输入 - 提供了更多的细节。 – RYFN 2010-11-16 09:26:04