我正在尝试将表2(在pacp2列中)的值插入表1(在pacp列中),其中两个表中的facility_id都匹配,并且table1 pacp列为null。我收到以下错误:
消息4104,级别16,状态1,第5行,多部分标识符无法绑定“ table1.FACILITYID”。讯息4104,等级16,状态1,第5行无法绑定多部分标识符“ table1.pacp”。
有人知道为什么这不起作用吗?我已经尝试过为两个表使用别名,但是不能使用。
INSERT INTO database.dbo.table1 (pacp)
SELECT pacp2
FROM table2
WHERE database.dbo.table1.facility_id = database.dbo.table2.facility_id
AND database.dbo.table1.pacp IS NULL
对问题的描述表明您正在寻找的是update
而不是insert
。
这里是使用可更新的CTE的一种选择:
with cte as (
select t1.pacp, t2.pacp2
from table1 t1
inner join table2 t2 on t1.facility_id = t2.facility_id
where t1.pacp is null
)
update cte set pacp = pacp2
对于table1
为pacp
的null
行,查询尝试使用pacp2
进行匹配以从table2
中检索facility_id
的值。如果成功,则更新table1
中的相应行,并将pacp
设置为pacp2
的值。