我正在尝试运行以下代码
update apidura_dwh.B2C_order_line
join apidura_dwh.B2C_orders
using (order_id)
set apidura_dwh.B2C_order_line.order_date = apidura_dwh.B2C_orders.order_date;
commit;
基本上只是想将订单日期添加到行表中 - 这会返回一条成功的消息并说明行已更改 - 但是当我查询订单行表时,没有行被更改。
如果我加入订单表
,它似乎有效
答案 0 :(得分:0)
这表示您有不匹配的订单或具有NULL
日期的订单。首先,我将查询写为:
update apidura_dwh.B2C_order_line ol join
apidura_dwh.B2C_orders o
using (order_id)
set ol.order_date = o.order_date;
commit;
要测试更新是否有效 - 并假设ol.order_id
为NULL
- 那么您可以执行以下操作:
select count(*)
from apidura_dwh.B2C_order_line ol
where ol.order_date is null;
更新之前和之后。
您可以通过执行以下操作来查找缺少的订单ID:
select count(*)
from apidura_dwh.B2C_order_line ol left join
apidura_dwh.B2C_orders o
using (order_id)
where o.order_id is null;
NULL
日期使用:
select count(*)
from apidura_dwh.B2C_orders o
where o.order_date is null;
答案 1 :(得分:0)
您不能在UPDATE查询中使用JOIN。
UPDATE B2C_order_line
SET B2C_order_line.order_date = B2C_orders.order_date
FROM B2C_orders
WHERE
B2C_order_line.order_id = B2C_orders.order_id;
试试这个。