SQL:
CREATE TABLE OldTable
(
TaskId INT PRIMARY KEY IDENTITY,
TaskName VARCHAR(32)
)
CREATE TABLE NewTable
(
TaskId INT PRIMARY KEY IDENTITY,
TaskName VARCHAR(32)
)
INSERT INTO dbo.oldTable VALUES('TaskNo1')
INSERT INTO dbo.oldTable VALUES('TaskNo2')
INSERT INTO dbo.oldTable VALUES('TaskNo3')
INSERT INTO dbo.oldTable VALUES('TaskNo4')
DECLARE @MappingTableVar TABLE
(
NewTaskid INT,
OldTaksId int
);
INSERT INTO NewTable(TaskName)
OUTPUT INSERTED.TaskId INTO @MappingTableVar(NewTaskId)
SELECT TaskName from OldTable
SELECT * FROM @MappingTableVar
DROP TABLE NewTable;
DROP TABLE OldTable;
我想获得OldTable的TaskId与NewTable的TaksId的映射。 我设法只获得了NewTaskId。我怎么能得到OldTask?
需要帮助。
由于
答案 0 :(得分:4)
最简单的解决方案是:
Insert NewTable( TaskName )
Select TaskName
From OldTable
Insert @MappingTableVar( NewTaskId, OldTaskId )
Select NewTable.TaskId, OldTable.TaskId
From NewTable
Join OldTable
On OldTable.TaskName = NewTable.TaskName
除非您将其包含在插入中,否则无法使用Output子句获取OldTable的TaskId(这意味着您需要在NewTable中为其添加列):
Alter Table NewTable
Add OldTaskId int
GO
Insert NewTable( TaskName, OldTaskId )
Output inserted.TaskId, inserted.OldTaskId Into @MappingTableVar( NewTaskId, OldTaskId )
Select TaskName, TaskId
From OldTable