Sql 递归CTE以查找父记录
首先,我必须承认我对sql server不是很熟悉,但我认为这是最好的方法 我有一个表Sql 递归CTE以查找父记录,sql,sql-server-2005,recursion,common-table-expression,Sql,Sql Server 2005,Recursion,Common Table Expression,首先,我必须承认我对sql server不是很熟悉,但我认为这是最好的方法 我有一个表tabData。它的主键被命名为idData,并且有一个自引用的FKfiData 因此fiData引用父记录,并从tabData中选择*,其中idData=fiData返回父记录的所有数据。这是简单而快速的。但是如何按照自然顺序从给定的记录中获得所有的父母呢? 假设有一个子项(idData=4)和三个父项(第一个父项是idData=3的记录): 我认为递归CTE是一种方法,但我对它的语法不太熟悉。 那么,实现
tabData
。它的主键被命名为idData
,并且有一个自引用的FKfiData
因此fiData引用父记录,并从tabData中选择*,其中idData=fiData返回父记录的所有数据。这是简单而快速的。但是如何按照自然顺序从给定的记录中获得所有的父母呢?
假设有一个子项(idData=4)和三个父项(第一个父项是idData=3的记录):
我认为递归CTE是一种方法,但我对它的语法不太熟悉。
那么,实现返回所有家长的CTE的正确方法是什么
我尝试了以下操作,但它给出了错误的结果(3,4而不是3,2,1):
(为了测试它,我为我和你创建了一个临时表)
提前感谢。更改为:
INNER JOIN PreviousClaims parent ON parent.fiData = child.idData
给了我你想要的结果 您拥有向后连接 改变这个
INNER JOIN PreviousClaims parent ON parent.idData= child.fiData
对此
INNER JOIN PreviousClaims parent ON parent.fiData = child.idData
谢谢,柯克·沃尔快了几秒钟。
INNER JOIN PreviousClaims parent ON parent.idData= child.fiData
INNER JOIN PreviousClaims parent ON parent.fiData = child.idData