相关疑难解决方法(0)

递归CTE如何逐行运行?

我认为我已经将Recursive CTE的格式写得很好,但是仍然发现自己很沮丧,我无法手动处理一个(假装自己是SQL引擎并用笔和纸到达结果集) .我发现了这个,这接近我正在寻找的,但不够详细.我没有问题跟踪C++递归函数并了解它是如何运行的 - 但对于SQL我不明白为什么或如何引擎知道停止.每次调用锚点和递归块,还是在以后的迭代中跳过锚点?(我对此表示怀疑,但我试图表达我对它似乎跳转的方式的困惑.)如果每次调用锚点,锚点在最终结果中不会多次出现?我希望有人能够分解第1行第2行等等.结果集累积时会发生什么以及"在内存中".

我冒昧地从这个页面窃取我的例子,因为它似乎是最容易理解的.

DECLARE @tbl TABLE ( 
      Id INT 
    , [Name] VARCHAR(20) 
    , ParentId INT 
) 

INSERT INTO @tbl( Id, Name, ParentId ) 
VALUES 
     (1, 'Europe', NULL) 
    ,(2, 'Asia',   NULL) 
    ,(3, 'Germany',   1) 
    ,(4, 'UK',        1) 
    ,(5, 'China',     2) 
    ,(6, 'India',     2) 
    ,(7, 'Scotland',  4) 
    ,(8, 'Edinburgh', 7) 
    ,(9, 'Leith',     8)  
; 

WITH abcd 
    AS ( 
        -- anchor 
        SELECT  id, Name, ParentID, 
                CAST(Name AS VARCHAR(1000)) AS Path 
        FROM    @tbl 
        WHERE   ParentId …
Run Code Online (Sandbox Code Playgroud)

sql recursive-query

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

带外连接的递归查询?

我正在尝试以下查询,

DECLARE @EntityType varchar(25)
SET @EntityType = 'Accessory';

WITH Entities (
        E_ID, E_Type,
        P_ID, P_Name, P_DataType, P_Required, P_OnlyOne,
        PV_ID, PV_Value, PV_EntityID, PV_ValueEntityID,
        PV_UnitValueID, PV_UnitID, PV_UnitName, PV_UnitDesc, PV_MeasureID, PV_MeasureName, PV_UnitValue,
        PV_SelectionID, PV_DropDownID, PV_DropDownName, PV_DropDownOptionID, PV_DropDownOptionName, PV_DropDownOptionDesc,
        RecursiveLevel
    )
AS
(
    -- Original Query
    SELECT dbo.Entity.ID AS E_ID, dbo.EntityType.Name AS E_Type,
    dbo.Property.ID AS P_ID, dbo.Property.Name AS P_Name, DataType.Name AS P_DataType, Required AS P_Required, OnlyOne AS P_OnlyOne,
    dbo.PropertyValue.ID AS PV_ID, dbo.PropertyValue.Value AS PV_Value, dbo.PropertyValue.EntityID AS PV_EntityID, dbo.PropertyValue.ValueEntityID AS PV_ValueEntityID,
    dbo.UnitValue.ID AS PV_UnitValueID, dbo.UnitOfMeasure.ID …
Run Code Online (Sandbox Code Playgroud)

sql sql-server recursive-query outer-join

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

标签 统计

recursive-query ×2

sql ×2

outer-join ×1

sql-server ×1