如何将数据从一个表传输到另一个表

时间:2013-10-06 00:07:50

标签: sql sql-server sql-server-2008 tsql

我正在使用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 ??)

有点生锈,因此需要帮助。

非常感谢提前。

1 个答案:

答案 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