我正在尝试将我的查询组合到一个连接中以带回一些记录。
这是我查询的第一部分,这正是我想要的,并从这个结果集中返回最新记录,因为每个记录通过 fkSDSID 链接到另一个,如下所示,第一个没有 id 作为它的第一个,没有以前的记录。
pkSDSID fkSDSID
50605 NULL
88377 50605
90602 88377
90616 90602
此查询从结果中返回 90616。
DECLARE @LatestSDS INT
with tree as (
SELECT pkSDSID, fkSDSID
FROM tblSDS
WHERE pkSDSID = 50605
UNION ALL
SELECT t1.pkSDSID, t1.fkSDSID
FROM tblSDS t1
JOIN tree p ON p.pkSDSID = t1.fkSDSID
)
SELECT TOP 1 @LatestSDS = pkSDSID FROM tree ORDER BY pkSDSID DESC
SELECT @LatestSDS
如果我有一个我想找到的记录,这很好,但我现在坚持他如何为多条记录执行此操作。
我想知道我是否可以以某种方式将其用作主查询的子查询,但我似乎找不到让它工作的方法。
我想要的是替换pkSDSID
上面第一个 where 子句中的硬编码,即 50605,而是使用一列或多条记录并获取LastestSDS
每条记录的。
一个例子就是这样
我有两条记录,分别是 50605 和 45670。
他们在表中都有更新的记录
pkSDSID fkSDSID
50605 NULL
88377 50605
90602 88377
90616 90602
pkSDSID fkSDSID
45670 NULL
50123 45670
51234 50123
60125 51234
所以对于这些记录中的每一个,我需要使用上面的代码来获取最新的记录,分别是 90616 和 60125。
然后在列表中仅显示这些新记录。
我希望这是有道理的,我对 SQL 并不是那么好,我只是不知道从哪里开始。
这真的可能吗?
谢谢丹