Mysql - 从另一个表数据更新列而不减少行

时间:2017-02-06 22:36:52

标签: mysql sql subquery inner-join

我对以下情况感到困惑:

表格订单 order_id,order_date,order_customerid,order_state,order_city

表客户 customer_id,customer_city,customer_state

我需要将customer_city和customer_state复制到order_city和order_state,它们当前为null。我尝试使用以下连接:

select * 
from orders o
inner join customers c
on o.customerid = c.id

然后使用更新查询。但它似乎是按客户分组订单,因此它不反映实际的订单数量,导致一些order_city和order_state保持为空。

如果知道来自同一客户的订单很多,我该如何更新订单表中的每个订单?

1 个答案:

答案 0 :(得分:0)

您可以使用multi-table update syntax

这样的事情会对你有用:

update orders 
  inner join customers on customers.customer_id = orders.order_customerid 
set orders.order_state = customers.order_state, 
  orders.order_city = customers.order_city
where orders.order_state is null 
  or orders.order_city is null