我正在尝试将我的查询合并成一个连接,以返回一些记录。
以下是我的查询的第一部分,它完全符合我的要求,并返回此结果集中的最新记录,因为每个记录都通过fkSDSID链接到其他记录,如下所示,第一个记录没有ID,因为它是第一个记录,也没有前面的记录。
这对于我想要查找一个记录的情况很好,但现在我遇到的问题是如何对多个记录执行此操作。
我想知道是否可以使用内部连接将其作为主查询的子查询,但我似乎找不到使其正常工作的方法。
我想要的是用第一个where子句中硬编码的
例如:
我有两个记录,比如50605和45670。
它们都在表中有更新的记录。
以下是我的查询的第一部分,它完全符合我的要求,并返回此结果集中的最新记录,因为每个记录都通过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
这对于我想要查找一个记录的情况很好,但现在我遇到的问题是如何对多个记录执行此操作。
我想知道是否可以使用内部连接将其作为主查询的子查询,但我似乎找不到使其正常工作的方法。
我想要的是用第一个where子句中硬编码的
pkSDSID
(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,也不知道接下来该怎么做。
这样做真的可行吗?
谢谢 Dan