分层数据库选择/插入语句(SQL Server)

2 sql-server asp.net sql-server-2005

我最近偶然发现了从1表中选择关系详细信息并插入另一个表的问题,我希望有人可以提供帮助.

我有一个表结构如下:

ID (PK)   Name       ParentID<br>
1         Myname     0<br>
2         nametwo    1<br>
3         namethree  2
Run Code Online (Sandbox Code Playgroud)

例如

这是我需要从中选择并获取所有关系数据的表.因为可以有无限数量的子链接(我可以为此创建一个函数来创建循环吗?)

然后,一旦我有所有数据,我需要插入到另一个表中,ID现在必须改变,因为id必须按顺序排列(例如,我不能将id"2"作为例如3的子),我希望我可以使用相同的功能来选择插入.

Chr*_*sen 5

如果您使用的是SQL Server 2005或更高版本,则可以使用递归查询来获取信息.这是一个例子:

With tree (id, Name, ParentID, [level])
As (
    Select id, Name, ParentID, 1
    From [myTable]
    Where ParentID = 0

    Union All

    Select child.id
          ,child.Name
          ,child.ParentID
          ,parent.[level] + 1 As [level]
    From [myTable] As [child]
    Inner Join [tree] As [parent]
    On [child].ParentID = [parent].id)
Select * From [tree];
Run Code Online (Sandbox Code Playgroud)

此查询将以递归方式返回第一部分(Where ParentID = 0)和所有子行请求的行.这对你有帮助吗?

我不确定我是否理解你的插件会发生什么.完成后,您能否提供有关预期结果的更多信息?

祝好运!