我有一些导入到SQL中的记录。其中一个字段“FieldToChage”是引用旧键值的ParentID。当我将数据导入SQL时,新的键值与'FieldToChage‘中包含的旧键值不对应。
下面是我导入的表的简化模式:
[dbo].[zChangeTable](
[ID] [int] IDENTITY(1,1) NOT NULL,
[FieldToChange] [int] NULL,
[OldID] [int] NOT NULL,我需要的是标题为'FieldToChange‘(ParentID)的字段来引用字段'OldID’中的旧索引的新键值。
以下是现有表数据的示例:
ID FieldToChange OldID
159 NULL 143
160 143 142
161 143 145
25 174 171
26 174 172
204 NULL 173
17 NULL 174因此需要一条update语句遍历该表并更新'FieldToChange‘,如下所示…
ID FieldToChange OldID
159 NULL 143
160 159 142
161 159 145
25 17 171
26 17 172
204 NULL 173
17 NULL 174希望这是有意义的。
提前感谢
发布于 2011-12-22 21:31:21
UPDATE t
SET t.FieldToChange = t1.ID
FROM zChangeTable t JOIN zChangeTable t1 ON t.FieldToChange = t1.OldID发布于 2011-12-22 21:32:40
如下所示:
update zChangeTable
set t1.FieldToChange = t2.ID
from zChangeTable t1
inner join zChangeTable t2 on t1.FieldToChange = t2.OldID发布于 2011-12-22 21:33:24
要做到这一点,最简单的方法是分两部分导入:首先添加记录,然后返回并分配父ID列。为简单起见,我将使用表名OldTable和NewTable
insert into NewTable
(
OldID
)
select
ID
from OldTable
update nt set
FieldToChange = ntp.ID
from NewTable nt
join OldTable ot on ot.ID = nt.OldID
join NewTable ntp on ntp.OldID = ot.ParentIDhttps://stackoverflow.com/questions/8604508
复制相似问题