我有一个具有以下结构的表
表名:比赛
这基本上存储哪个产品是匹配哪个产品.我需要处理这个表
并存储在如下的组表中.
表名:组
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)来控制递归深度.