DROP TABLE [dbo].[TESTdigui]
GO
CREATE TABLE [dbo].[TESTdigui] (
[father] varchar(30) NULL ,
[childs] varchar(30) NULL ,
[num] int NULL
)
GO
INSERT INTO [dbo].[TESTdigui] ([father], [childs], [num]) VALUES (N'A', N'B', N'200')
GO
GO
INSERT INTO [dbo].[TESTdigui] ([father], [childs], [num]) VALUES (N'B', N'G', N'700')
GO
GO
INSERT INTO [dbo].[TESTdigui] ([father], [childs], [num]) VALUES (N'A', N'C', N'300')
GO
GO
INSERT INTO [dbo].[TESTdigui] ([father], [childs], [num]) VALUES (N'D', N'E', N'500')
GO
GO
INSERT INTO [dbo].[TESTdigui] ([father], [childs], [num]) VALUES (N'D', N'F', N'600')
GO
GO
INSERT INTO [dbo].[TESTdigui] ([father], [childs], [num]) VALUES (N'A', N'H', N'800')
GO
GO
INSERT INTO [dbo].[TESTdigui] ([father], [childs], [num]) VALUES (N'A', N'D', N'400')
GO
GO
----SQL递归查询
WITH T AS
(
SELECT father,childs , num
FROM [dbo].TESTdigui
WHERE father = 'A'
UNION ALL
SELECT A.father , A.childs , A.num
FROM [dbo].TESTdigui AS A JOIN T AS B ON A.father = B.childs
)
SELECT * FROM T ORDER BY father,childs