SQL Server 2008中的递归

用户3398663

我有一个这样的方案(表):

在此处输入图片说明

这是表(文件夹)结构。我在此表中只记录了user_id = 1现在,我需要为另一个用户插入相同的文件夹结构。

抱歉,我已经更新了问题...是的,folder_id是标识列(但可以为特定的userID划分folder_id)。考虑到我不知道可以存在多少个子文件夹。Folder_Names对于用户而言是唯一的,并且Folder结构对于所有用户而言都不相同。假设user3需要与user1相同的文件夹结构,而user4需要与user2相同的文件夹结构。并且仅提供源用户ID和目标用户ID(假设目标用户ID没有任何文件夹结构)。

我怎样才能做到这一点?

乔基·纳库里(Giorgi Nakeuri)

您可以执行以下操作:

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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

SQL Server 2008中的递归查询

来自分类Dev

SQL Server 2008中的递归触发器

来自分类Dev

SQL Server 2008 patindex递归

来自分类Dev

SQL Server 2008中的减法

来自分类Dev

在SQL Server 2008中订购

来自分类Dev

如何使用递归逻辑仅返回sql表中的Root行(SQL Server 2008 R2)

来自分类Dev

SQL Server 2008中的SQL FIFO逻辑

来自分类Dev

SQL Server 2008中的SQL FIFO逻辑

来自分类Dev

SQL Server 2008 R2:递归查询

来自分类Dev

在SQL Server 2008中的列中添加#

来自分类Dev

SQL Server 2008中的循环联接

来自分类Dev

在SQL Server 2008中创建日期

来自分类Dev

SQL Server 2008中的表格问题

来自分类Dev

在MS SQL Server 2008中创建序列

来自分类Dev

SQL SERVER 2008中的累积添加

来自分类Dev

SQL Server 2008中的复杂模式匹配

来自分类Dev

在SQL Server 2008中无法使用Float

来自分类Dev

SQL Server 2008中的日期格式

来自分类Dev

SQL Server 2008中的数据透视表

来自分类Dev

SQL Server 2008中的表格问题

来自分类Dev

SQL Server 2008中列的不同值

来自分类Dev

在SQL Server 2008中选择

来自分类Dev

在SQL Server 2008中删除重复项

来自分类Dev

SQL Server 2008中的累积加法

来自分类Dev

在SQL Server 2008中列为行

来自分类Dev

SQL Server 2008中的自动行删除

来自分类Dev

激活SQL Server 2008中的自动提交?

来自分类Dev

在SQL Server 2008中透视多个列

来自分类Dev

自联接SQL Server 2008中的表