SQL Server中的递归查询

前端之家收集整理的这篇文章主要介绍了SQL Server中的递归查询前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个具有以下结构的表

表名:比赛

这基本上存储哪个产品是匹配哪个产品.我需要处理这个表
并存储在如下的组表中.

表名:组

group_ID存储形成组的Product_IDS的MIN Product_ID.我们来举个例子

如果A匹配B,B匹配C,那么三行应以格式(A,A),(A,B),C)

我已经尝试寻找共同的相关子查询和CTE,但没有得到这个实现.

我需要在sql中这样做.

谢谢您的帮助 .

解决方法

尝试这个:
;WITH CTE
AS
(
    SELECT DISTINCT
        M1.Product_ID Group_ID,M1.Product_ID
    FROM matches M1
        LEFT JOIN matches M2
            ON M1.Product_Id = M2.matching_Product_Id
    WHERE M2.matching_Product_Id IS NULL
    UNION ALL
    SELECT
        C.Group_ID,M.matching_Product_Id
    FROM CTE C
        JOIN matches M
            ON C.Product_ID = M.Product_ID
)
SELECT * FROM CTE ORDER BY Group_ID

您可以使用OPTION(MAXRECURSION n)来控制递归深度.

SQL FIDDLE DEMO

猜你在找的MsSQL相关文章