从另一个表插入并获取两个表ID

时间:2011-06-01 16:02:00

标签: sql

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?

需要帮助。

由于

1 个答案:

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