2

我有一个名为 Module 的表。表结构如下:

ModuleID     ModuleName        ParentID

   1            System Manage       0
   2            Database Manage     1
   3            Area Manage         1
   4            Basic Setting       0

我想通过 sql 语句得到下面的结果。

   ModuleID       ModuleName        ParentMoudle
     1               System Manage      0
     2               Database Manage    System Manage
     3               Area Manage        System Manage 
     4               Basic Setting      0

我是一个sql新手。非常感谢!

4

2 回答 2

1

父子关系可以通过 LEFT OUTER JOIN 和查询同一张表来实现。

      select m.moduleid,m.modulename,COALESCE(p.modulename,0) from table as m
      left outer join table as p on m.moduleid = p.module.id
于 2012-08-01T08:14:07.320 回答
0

这应该有效:

;WITH Tree AS
(
    SELECT *, CAST(NULL AS VARCHAR(25)) AS ParentName
      FROM @TT
     WHERE ParentID IS NULL
    UNION ALL
    SELECT Fam.*,Tree.ModuleName AS ParentName
      FROM @TT AS Fam
     INNER JOIN Tree
        ON Fam.ParentID = Tree.moduleID
)
SELECT * FROM Tree
于 2012-08-01T08:27:16.570 回答