加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

SQL Server中的递归查询

发布时间:2020-12-12 16:11:52 所属栏目:MsSql教程 来源:网络整理
导读:我有一个具有以下结构的表 表名:比赛 这基本上存储哪个产品是匹配哪个产品.我需要处理这个表 并存储在如下的组表中. 表名:组 group_ID存储形成组的Product_IDS的MIN Product_ID.我们来举个例子 如果A匹配B,B匹配C,那么三行应以格式(A,A),(A,B),C) 我已经尝
我有一个具有以下结构的表

表名:比赛

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

表名:组

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读