更新一行和所有 'parents'(如果存在)

Update a row and all 'parents' (if exists)

我需要帮助来做一个查询,我最初根据描述和所有 parents 更新一行,如果存在的话。

我的tableItemMenu:

Id

描述名称

IdParent

BolActive

所以,我需要激活(设置 BolActive = 1)一行,其中 描述 我会在查询中通知,然后如果 IdParent 不是 [=63] 则更新所有行=] 并且如果它存在于同一个 table (IdParent = Id).

类似于:

更新 ItemMenu 设置 BolActive = 1 其中 DescName = 'MyMenu'

然后我需要检查 Select * 来自 ItemMenu 的 IdParent,其中 DescName = 'MyMenu' 存在

如果是,我将 更新 ItemMenu set BolActive = 1 where IdParent (from the previous select) = Id 并再次检查此处是否存在 IdParent.. . 直到 IdParent 为 null/blank 并且它停止

可能吗?

P.s。我无法更改 table 结构。

假设我理解所需的代码结果,请尝试使用递归通用 table 表达式进行更新。提供了截图。为我的菜鸟文本格式道歉。

http://s12.postimg.org/cw8yz0isd/Capture.jpg

DECLARE @description AS VARCHAR(50) = 'Hello World'

;WITH CTE AS (

    SELECT  Menu.*
    FROM    dbo.ItemMenu Menu
    WHERE   Menu.descname = @description
    UNION   ALL
    SELECT  Menu2.*
    FROM    dbo.ItemMenu Menu2
    JOIN    CTE
    ON      Menu2.idParent = CTE.Id
)
Update  ActualMenu
SET     BolActive = 1 
FROM    CTE Menu
JOIN    dbo.ItemMenu ActualMenu
ON      ActualMenu.Id = Menu.Id