请考虑以下内容
;WITH GetParentOfChild AS
(
SELECT
Rn = ROW_NUMBER() Over(Order By (Select 1))
,row_id AS Parents
,parent_account_id As ParentId
FROM siebelextract..account
WHERE row_id = @ChildId
UNION ALL
SELECT
Rn + 1
,a.row_id as Parents
,a.parent_account_id As ParentId
FROM siebelextract..account a
JOIN GetParentOfChild gp on a.row_id = gp.ParentId
)
SELECT TOP 1 @ChildId = Parents
FROM GetParentOfChild
ORDER BY Rn DESC
它的作用是,给定任何一个孩子,它将返回根级父母......程序完全正常工作......
出于好奇/实验的缘故,我将JOIN更改为Left Outer Join并报告
消息462,级别16,状态1,过程GetParent,第9行 在递归公用表表达式'GetParentOfChild'的递归部分中不允许外连接。
我的问题是为什么CTE的递归部分不能接受左外连接?它是按设计的吗?
谢谢