欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > IT业 > sql severs 递归查询

sql severs 递归查询

2025/5/15 6:13:56 来源:https://blog.csdn.net/weixin_55253638/article/details/142213485  浏览:    关键词:sql severs 递归查询

在sqlsevers 里面 WITH RECURSIVE 语句(在SQL Server中,通常使用 WITH 语句的公用表表达式(CTE)来实现递归查询),来处理这类查询

假设你有一个简单的BOM表结构,它可能包括以下几个字段:

  • BOM_ID:BOM的唯一标识符。
  • Product_ID:最终产品的ID。
  • Component_ID:构成该产品的部件或组件的ID。
  • Quantity:每个最终产品所需该部件或组件的数量。
  • Level:可选,表示部件在BOM中的层级(例如,直接部件为1,子部件的部件为2,依此类推)
  • 以下是一个使用CTE进行递归查询的示例,以检索给定产品的完整BOM树:
  • WITH RECURSIVE BOM_CTE AS (
        SELECT
            BOM_ID,
            Product_ID,
            Component_ID,
            Quantity,
            LEVEL,
            CAST (
            '' AS VARCHAR ( MAX )) AS Path 
        FROM
            BOM 
        WHERE
            Product_ID = 100 -- 假设我们从最终产品ID为100的产品开始
            UNION ALL-- 递归成员
        SELECT
            b.BOM_ID,
            b.Product_ID,
            b.Component_ID,
            b.Quantity,
            b.Level,
            CAST (
            cte.Path + '->' + CAST ( b.Component_ID AS VARCHAR ) AS VARCHAR ( MAX )) 
        FROM
            BOM_CTE cte
            INNER JOIN BOM b ON cte.Component_ID = b.Product_ID 
        ) SELECT
        * 
    FROM
        BOM_CTE 
    ORDER BY
        Path;

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词