递归SQL Server查询

doq*_*que 2 sql sql-server recursion

在具有如下reviewers结构的表中:

reviewer | reviewee
===================
2        |      1
3        |      2
4        |      3
5        |      4
Run Code Online (Sandbox Code Playgroud)

在函数调用中,我知道a reviewer-id和a reviewee-id(审阅者要检索的项目的所有者).

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

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

Mah*_*mal 6

你可以这样做:

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;
Run Code Online (Sandbox Code Playgroud)

演示