SQL根据上次选择的结果继续选择记录

时间:2016-09-12 15:19:39

标签: sql sql-server

这篇文章的标题可能不正确。我有一个类似下面的表,我需要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相关的所有记录。这可能吗?这是递归吗?

1 个答案:

答案 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