我有一个这样的方案(表):
这是表(文件夹)结构。我在此表中只记录了user_id = 1。现在,我需要为另一个用户插入相同的文件夹结构。
抱歉,我已经更新了问题...是的,folder_id是标识列(但可以为特定的userID划分folder_id)。考虑到我不知道可以存在多少个子文件夹。Folder_Names对于用户而言是唯一的,并且Folder结构对于所有用户而言都不相同。假设user3需要与user1相同的文件夹结构,而user4需要与user2相同的文件夹结构。并且仅提供源用户ID和目标用户ID(假设目标用户ID没有任何文件夹结构)。
我怎样才能做到这一点?
您可以执行以下操作:
SET IDENTITY_INSERT dbo.Folder ON
go
declare @maxFolderID int
select @maxFolderID = max(Folder_ID) from Folder
insert into Folder
select @maxFolderID + FolderID, @maxFolderID + Parent_Folder_ID, Folder_Name, 2
from Folder
where User_ID = 1
SET IDENTITY_INSERT dbo.Folder OFF
go
编辑:
SET IDENTITY_INSERT dbo.Folder ON
GO
;
WITH m AS ( SELECT MAX(Folder_ID) AS mid FROM Folder ),
r AS ( SELECT * ,
ROW_NUMBER() OVER ( ORDER BY Folder_ID ) + m.mid AS rn
FROM Folder
CROSS JOIN m
WHERE User_ID = 1
)
INSERT INTO Folder
SELECT r1.rn ,
r2.rn ,
r1.Folder_Name ,
2
FROM r r1
LEFT JOIN r r2 ON r2.Folder_ID = r1.Parent_Folder_ID
SET IDENTITY_INSERT dbo.Folder OFF
GO
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句