gpt4 book ai didi

sql - SQL Server 中的递归查询

转载 作者:行者123 更新时间:2023-12-01 19:32:07 24 4
gpt4 key购买 nike

我有一个具有以下结构的表格

表名称:匹配

Table name: matches

这基本上存储了哪个产品与哪个产品相匹配。我需要处理这个表并存储在如下所示的组表中。

表名称:

enter image description here

group_ID 存储构成组的 Product_IDSMIN Product_ID。举个例子吧

如果 A 与 B 匹配,B 与 C 匹配,则三行应以 (A, A), (A, B), (A, 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

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

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com