SQL Server:更新树中的列

seb*_*ibu 5 sql sql-server tree database-design sql-update

我想更新树中的列.我想出了以下声明:

WITH q AS (
    SELECT t1.*
    FROM buss_item t1
    WHERE t1.id_item = 218

    UNION ALL

    SELECT t2.*
    FROM buss_item t2
    JOIN q ON t2.parent_id = q.id_item
)
UPDATE q
SET default_item = 0
Run Code Online (Sandbox Code Playgroud)

但是我收到一个错误:

派生表'q'不可更新,因为派生表的列是派生的或常量的.

有关如何修复此更新的任何想法?

bum*_*mmi 9

WITH q AS (
    SELECT t1.*
    FROM buss_item t1
    WHERE t1.id_item = 218

    UNION ALL

    SELECT t2.*
    FROM buss_item t2
    JOIN q ON t2.parent_id = q.id_item
)
UPDATE buss_item  set default_item = 0 from q
where q.item_ID=buss_item.ItemID
Run Code Online (Sandbox Code Playgroud)