我正在使用sql-server 2008。
我有3张桌子:
Item
- Id
- Name
ItemLink
- Id
- FkParentItemId
- FkChildItemId
Item2
- Id
- FkItemId
- Name
关系是:
ItemLink >- Item -< item2
>-
我现在意识到我犯了一个错误,需要将数据从“Item2”传输到“Item”,但是通过插入ItemLink记录来创建层次结构。我不想就这种方法的利弊开始辩论,但只是补充说“Item2”需要“Item”的常用表格
所以我需要在插入ddl上抬头做到这一点。我相信这将是:
Insert into Item(Name) select(Item2.Name) from Item2
Insert into ItemLink(FkParentItemId,FkChildItemId) select (Item2.FkItemId, New ItemId ??)
有点生锈,因此需要帮助。
非常感谢提前。
答案 0 :(得分:1)
好的,我在这里做一些假设。
我假设表Item2中的值将保留。
insert into item (name)
select Name from item2
这个中间部分对我来说不清楚。 不知何故,您需要将Fk更新为Item表。
update item2
set FkItemId = id
from item2 inner join item
on item.name = item2.name
填充ItemLink
insert into ItemLink ( PkParent, PkChild)
select item.id, item2.id
from item2 inner join item
on item.id = item2.FkItemId