使用Where子句从一张表插入到另一张表中

问题描述 投票:0回答:1

我正在尝试将表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
sql-server join sql-server-2012 sql-update sql-insert
1个回答
0
投票

对问题的描述表明您正在寻找的是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

对于table1pacpnull行,查询尝试使用pacp2进行匹配以从table2中检索facility_id的值。如果成功,则更新table1中的相应行,并将pacp设置为pacp2的值。

© www.soinside.com 2019 - 2024. All rights reserved.