小编mar*_*ate的帖子

递归 CTE 以找到所有孩子的总数

这是一个装配树,我想使用递归T-SQL查询(大概CTE)和下面的预期结果进行搜索。我想知道给定任何零件的每个组件的总量。

这意味着如果我搜索“铆钉”,我想知道程序集中每个级别的总数,而不仅仅是直接子项计数。

Assembly (id:1)
    |
    |-Rivet
    |-Rivet
    |-SubAssembly (id:2)
    |   |
    |   |-Rivet
    |   |-Bolt
    |   |-Bolt
    |   |-SubSubAssembly (id:3)
    |      |
    |      |-Rivet
    |      |-Rivet
    |
    |-SubAssembly (id:4)
       |-Rivet
       |-Bolt

    DESIRED Results
    -------
    ID, Count
    1 , 6
    2 , 3
    3 , 2
    4 , 1
Run Code Online (Sandbox Code Playgroud)

目前,我可以获得直接父母,但想知道如何扩展我的 CTE 以允许我向上滚动此信息。

With DirectParents AS(
--initialization
Select InstanceID, ParentID
From Instances i 
Where i.Part = 'Rivet'

UNION ALL
--recursive execution
Select i.InstanceID, i.ParentID
From PartInstances i  INNER …
Run Code Online (Sandbox Code Playgroud)

sql-server cte t-sql recursive

17
推荐指数
1
解决办法
1万
查看次数

T-SQL 的 RowNum(不是 TOP #)

试图运行更新,但我想逐步完成它,因为它有相当多的数据并且不想一次全部爆炸。

在 oracle 中,选择我想要的行要容易一些,因为您可以将它包含在WHERE子句中,但在 T-SQL 中您将它包含在select. 我想写一些类似的东西:

Update Instances
set thing = 'new thing'
Where rownum<500
Run Code Online (Sandbox Code Playgroud)

基本上想一次做500个,这个语法在TSQL中可行吗?

sql-server t-sql update

2
推荐指数
2
解决办法
559
查看次数

标签 统计

sql-server ×2

t-sql ×2

cte ×1

recursive ×1

update ×1