首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >具有定义起点的递归SQL查询

具有定义起点的递归SQL查询
EN

Stack Overflow用户
提问于 2018-07-03 18:36:53
回答 1查看 118关注 0票数 0

我试图让递归查询与定义的起点一起工作。

下面是我表中一些名为Part_v_Container的示例数据

代码语言:javascript
运行
复制
Serial_No   From_Container  Part_Key    Part_Operation_Key
1234                1233    5678         5
1233                1232    5678         4
1231                1230    5678         3
1230                NULL    5678         2

基本上,我们发送了一个序列号,然后我需要跟踪它,在整个过程中跟踪所有以前的序列号From_Container。在我的实际查询中,我将让启动的Serial_No是一个用户定义的变量。

以下是我的尝试:

代码语言:javascript
运行
复制
;WITH Recursive_cte AS
(SELECT 
  PContainer.Serial_No
  ,PContainer.From_Container
  ,PContainer.Part_Key
  ,PContainer.Part_Operation_Key

  FROM Part_v_Container AS PContainer
  WHERE Serial_No LIKE '1234'  -- Will be user defined variable

UNION ALL

SELECT 
    PContainer.Serial_No
    ,PContainer.From_Container
    ,PContainer.Part_Key
    ,PContainer.Part_Operation_Key  
  FROM Recursive_cte
  INNER JOIN
  Part_v_Container AS PContainer
  ON PContainer.From_Container = Recursive_cte.Serial_No 
  )

 SELECT * 
 FROM Recursive_cte

然而,这只返回一行,即Serial_No = 1234行。我的真实数据集有数千个序列号,我需要能够从中选择哪些序列号进行追溯,而不是对表中的每个查询都进行递归的广泛查询。

我试着阅读了几篇文章和一些示例,以使其发挥作用,包括一个没有成功的这里

提前谢谢你的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-03 19:18:04

你把连接字段倒过来了。

SQL Demo

代码语言:javascript
运行
复制
;WITH Recursive_cte AS (
  SELECT 
    PContainer.Serial_No
  , PContainer.From_Container
  , PContainer.Part_Key
  , PContainer.Part_Operation_Key

  FROM Part_v_Container AS PContainer
  WHERE Serial_No = 1234  -- Will be user defined variable

UNION ALL

  SELECT 
      PContainer.Serial_No
    , PContainer.From_Container
    , PContainer.Part_Key
    , PContainer.Part_Operation_Key  
  FROM Recursive_cte
  INNER JOIN  Part_v_Container AS PContainer
     ON Recursive_cte.From_Container = PContainer.Serial_No 
)

SELECT * 
FROM Recursive_cte

输出

代码语言:javascript
运行
复制
| Serial_No | From_Container | Part_Key | Part_Operation_Key |
|-----------|----------------|----------|--------------------|
|      1234 |           1233 |     5678 |                  5 |
|      1233 |           1232 |     5678 |                  4 |
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51161051

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档