首页 >数据库 >mysql教程 >递归 SQL 查询如何根据最小产品 ID 对产品匹配进行分组?

递归 SQL 查询如何根据最小产品 ID 对产品匹配进行分组?

Mary-Kate Olsen
Mary-Kate Olsen原创
2025-01-05 14:33:45205浏览

How Can Recursive SQL Queries Group Product Matches Based on Minimum Product ID?

SQL Server 中的递归查询

数据分析师在将包含产品匹配的表转换为所需的分组表时遇到困难。目的是派生一个名为“groups”的新表,其中每个组由其组成产品的最小产品 ID 表示。

为了实现这一点,我们可以利用 SQL 的递归功能。以下是使用公共表表达式 (CTE) 的解决方案:

;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

CTE 定义了一个递归查询,该查询从没有任何匹配产品的行开始。随后,它会识别其他匹配产品并根据最小产品 ID 对它们进行分组。可以使用 OPTION(MAXRECURSION) 子句控制递归深度。

此解决方案根据指定条件有效地将产品匹配聚合到组中。

以上是递归 SQL 查询如何根据最小产品 ID 对产品匹配进行分组?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn