为什么with子句的范围未扩展到update语句的where子句?

我收到错误消息“无法绑定多部分标识符” T.stdID”。用于以下t-sql查询。

如果将更新替换为select.from ...,其中T.stdID = ...,则T.stdID为 毫无问题但是,它不受更新的限制!

with T as
(select ID as stdID,sum(credits) as crd
from takes,course
where takes.course_id = course.course_id
group by ID)
update student
set 
    tot_cred = T.crd
where
    student.ID = T.stdID

消息4104,第16级,状态1,第125行 无法绑定多部分标识符“ T.stdID”。

完成时间:2019-11-06T19:37:49.3354478 + 02:00

insanenana 回答:为什么with子句的范围未扩展到update语句的where子句?

with T as
(select ID as stdID,sum(credits) as crd
from takes,course
where takes.course_id = course.course_id
group by ID)
update student
set 
    tot_cred = T.crd

from
    student,T

where
    student.ID = T.stdID

非常感谢@Sean Lange!

,
with T as
  (select ID as stdID,sum(credits) as crd
   from takes
   inner join course
   on takes.course_id = course.course_id
   group by ID)
update student
set 
    tot_cred = T.crd
from student
inner join T
on student.ID = T.stdID
本文链接:https://www.f2er.com/3143172.html

大家都在问