【发布时间】:2010-12-13 18:25:42
【问题描述】:
您好,我有一个引用自身的表,我需要能够从给定的父 ID 中选择父记录及其所有子记录。
我的表如下:
ID | ParentID | Name
-----------------------
1 NULL A
2 1 B-1
3 1 B-2
4 2 C-1
5 2 C-2
所以对于上面的例子,我希望能够传入一个值 1 并获取上面的所有记录。
到目前为止,我已经提出了以下递归表值函数,但它的行为不符合预期(仅返回第一条记录)。
CREATE FUNCTION [dbo].[SelectBranches]
(
@id INT
,@parentId INT
)
RETURNS @branchTable TABLE
(
ID INT
,ParentID INT
,Name INT
)
AS
BEGIN
IF @branchId IS NOT NULL BEGIN
INSERT INTO @branchTable
SELECT
ID
,ParentID
,Name
FROM
tblLinkAdvertiserCity
WHERE
ID = @id
END
INSERT INTO @branchTable
SELECT
br.ID
,br.ParentID
,br.Name
FROM
@branchTable b
CROSS APPLY
dbo.SelectBranches(NULL, b.ParentID) br
RETURN
END
GO
【问题讨论】:
-
+1 表示在此处提问之前尝试解决自己问题。
标签: sql sql-server-2005 recursion hierarchy