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

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

Mary-Kate Olsen
发布: 2025-01-05 14:33:45
原创
202 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板