![](/img/trans.png)
[英]SQL-Server: How do I insert multiple rows with data from a temp table + store the ID of the inserted rows in the temp table
[英]Temp table and insert the unique Ids into another table, with SQL-Server
如何遍历临时表并将唯一 ID 插入另一个表?
SELECT Id
INTO #TempSubjectValues
FROM WebPortalDemo2DB_Dev_November.dbo.Subject_Value
WHERE SubjectId = @SubjectID_Latest
DECLARE @i INT
SELECT @i = min(Id)
FROM #TempSubjectValues
DECLARE @max INT
SELECT @max = max(Id)
FROM #TempSubjectValues
WHILE @i <= @max
BEGIN
INSERT INTO WebPortalDemo2DB_Dev_November.dbo.SubjectValueDetails (
[Value_Name]
,[Value_Details]
,[ParentValueDetailId]
,[Subject_ValueId]
,[isDeleted]
,[DeletedDate]
,[DeletedBy]
)
SELECT [Value_Name]
,[Value_Details]
,[ParentValueDetailId]
,@i
,[isDeleted]
,[DeletedDate]
,[DeletedBy]
FROM SubjectValueDetails
WHERE Subject_ValueId IN (
SELECT Id
FROM Subject_Value
WHERE SubjectId = @SubjectID
)
SET @i = @i + 1
END
这个循环插入重复的数据,但我想要的是插入它在 select 语句中选择的记录,但[Subject_ValueId]
应该是已经插入到我已经存储在临时表中的Subject_Value
表中的记录。
原因是如果我们在从另一个表和数据库中挑选时插入,我们需要父的新主键。
不确定在没有样本数据的情况下这是否可行。 一旦您确定选择结果正确,就取消对插入行的注释。
-- INSERT INTO WebPortalDemo2DB_Dev_November.dbo.SubjectValueDetails
SELECT DISTINCT
[Value_Name] = SVD.[Value_Name]
, [Value_Details] = SVD.[Value_Details]
, [ParentValueDetailId] = SVD.[ParentValueDetailId]
, [Subject_ValueId] = SVD.ID
, [isDeleted] = SVD.[isDeleted]
, [DeletedDate] = SVD.[DeletedDate]
, [DeletedBy] = SVD.[DeletedBy]
FROM SubjectValueDetails SVD
JOIN WebPortalDemo2DB_Dev_November.dbo.Subject_Value SVN ON SVN.SubjectID = SVD.ID
JOIN Subject_Value SV ON SV.ID = SVD.Subject_ValueId
WHERE
SV.SubjectId = @SubjectID -- IDK where this value come from
AND SVN.SubjectId = @SubjectID_Latest -- IDK where this value come from
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.