在表reviewers中,其结构如下:

reviewer | reviewee
===================
2        |      1
3        |      2
4        |      3
5        |      4

在函数调用中,我同时知道reviewer-idreviewee-id(审阅者要检索的项目的所有者)。

我现在正尝试发送一个查询,该查询将对审阅者表中的所有条目进行迭代,从审阅者开始,并以受审者的ID结束(并将其与我所知道的受审者ID匹配)。因此,我试图找出受审者与审阅者之间是否存在联系。

是否可以在单个查询中执行此操作?

最佳答案

你可以这样做:

WITH CTE
AS
(
   SELECT reviewer, reviewee
   FROM TableName
   WHERE reviewee = @revieweeID
   UNION ALL
   SELECT p.reviewer, p.reviewee
   FROM CTE c
   INNER JOIN TableName p ON c.reviewee = p.reviewer
)
SELECT *
FROM CTE;
--- WHERE reviewer = @reviewerID;

Demo

关于sql - 递归SQL Server查询,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13933255/

10-10 15:03