我的SQL更新没有提交

时间:2017-10-17 10:45:23

标签: mysql sql sql-update

我正在尝试运行以下代码

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;

基本上只是想将订单日期添加到行表中 - 这会返回一条成功的消息并说明行已更改 - 但是当我查询订单行表时,没有行被更改。

enter image description here

如果我加入订单表

,它似乎有效

enter image description here

  • 关于如何使这项工作的任何想法?

2 个答案:

答案 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_idNULL - 那么您可以执行以下操作:

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;

试试这个。