簡體   English   中英

將 2 個 CTE 合並為一個查詢問題

[英]Combining 2 CTEs into One Query trouble

我在組合兩個 CTE 時遇到了麻煩。 我需要從初始表 sku_attribute 更新 field_att1 和 field_att2。 基於級聯更新,我編寫了一個代碼(如下)。

誰能建議問題出在哪里? 錯誤顯示第二個 CTE (z) 不存在。

提前致謝。

with
y as 
(select
s.ind, s.item_no, s.child, s.skul_no, p.parent, 
a.field_att1, a.field_att2
from sku_attribute a, sku s, supp p
where a.skul_no=s.skul_no 
and p.skul_no=s.skul_no
and s.ind='F'
)
,
z as 
(select
s.ind, s.item_no, s.child, s.skul_no, p.parent, 
a.field_att1, a.field_att2
from sku_attribute a, sku s, supp p
where a.skul_no=s.skul_no 
and p.skul_no=s.skul_no
and s.ind='N'
)
Update z
set z.field_att1=y.field_att1, z.field_att2=y.field_att2, 
from y
where 1=1
and z.parent=y.child
and z.ind='N'
and z.item_no=y.item_no
;

由於 CTE 不允許更新,您可以考慮以下替代方案。

with y as 
(
    select s.ind, s.item_no, s.child, s.skul_no, p.parent, a.field_att1, a.field_att2
    from sku_attribute a, sku s, supp p
    where a.skul_no=s.skul_no and p.skul_no=s.skul_no and s.ind='F'
),
z as 
(
    select s.ind, s.item_no, s.child, s.skul_no, p.parent, a.field_att1, a.field_att2
    from sku_attribute a, sku s, supp p
    where a.skul_no=s.skul_no and p.skul_no=s.skul_no   and s.ind='N'
),
z_update as

(
    select coalesce(y.field_att1, z.field_att1) as field_att1,
        coalesce(y.field_att2, z.field_att2) as field_att2
    from z
        left join y on z.parent=y.child and z.ind='N' and z.item_no=y.item_no

)
select * from z_update;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM