【发布时间】:2020-03-30 12:31:30
【问题描述】:
我正在尝试编写一个查询来更新 SELECT 语句的每个结果行。
SELECT u.P_ERPNUMBER, a.P_ERPNUMBER
from users u
inner join orders o on o.USERPK = u.PK
inner join addresses a on a.pk = o.PAYMENTADDRESSPK
where o.STATUSPK = 8796095414363 AND a.P_ERPNUMBER is NULL AND o.CODE in ('PL3001442611','PL3051023794');
上述查询返回值 [ u.P_ERPNUMBER ] 我需要用来更新每个字段 [ a.P_ERPNUMBER ]。
我尝试将 SELECT 查询嵌套在如下所示的 UPDATE 语句中,但它返回“多行”错误...它会一个接一个地工作,但我需要它是一个批处理。
UPDATE ADDRESSES
SET P_ERPNUMBER = (
SELECT u.P_ERPNUMBER
from users u
join orders o on o.USERPK = u.PK
join addresses a on a.pk = o.PAYMENTADDRESSPK
where a.P_ERPNUMBER is NULL )
where PK in ( SELECT PAYMENTADDRESSPK FROM ORDERS
WHERE STATUSPK = 8796095414363 AND CODE in ('PL3001442611','PL3051023794'));
更新每个a.P_ERPNUMBER 及其加入的u.P_ERPNUMBER 的正确方法是什么?
【问题讨论】:
标签: sql oracle select foreach sql-update