这篇文章的标题可能不正确。我有一个类似下面的表,我需要SQL来选择与某个值相关的所有记录。这是一个“历史”表,它跟踪ID值,我跟踪ID曾经是什么。记录1分成两个并变为2和3,然后可能2和3合并在一起并变为4.例如:
OldID NewID
1 2
1 3
3 4
5 4
2 6
2 7
在上面的例子中,记录1变为2和3.记录4是3和5合并在一起。记录2是1的一部分,现在分为6和7。
因此,如果我们查看记录NewID = 7,它与记录2,6和1相关
NewID 4与3,5,1和2相关。
所以最后我需要语法来选择以这种方式与NewID = X相关的所有记录。这可能吗?这是递归吗?
答案 0 :(得分:0)
你看起来像这样吗?
declare @x int = 4
;with cte as (
select oldid, newid from table4 where newid = @x
union all
select t.oldid, t.newid from cte c inner join table4 t on c.OldId = t.newid
) select * from cte