2017-03-08 84 views
0

两个表我们有一个问题,在为特定的客户一个表,其中有人不小心过写某一个领域,因此我们恢复备份到一个单独的数据库。合并在一起

我想编写一个查询,将采取从备份版本的一个领域,用其覆盖现场版。

我在想:

UPDATE live.orders 
SET live.orders.price = backup.orders.price 
WHERE live.orders.id = backup.orders.id 
AND live.orders.date > '2017-01-01 00:00:00' 

请问这有什么一直从备份中恢复所有订单的地方,今年的活动数据库取代价格领域的预期效果?

而且,反正是有测试此并查看输出它实际上改变了表之前?

感谢

+0

当然,做一个本地副本或将它们复制到服务器上的一个新的数据库,并尝试查询出来。然后在交易中执行,以便您可以将其回滚。 – ceejayoz

回答

1

看来你需要根据更新加入

UPDATE live.orders 
    JOIN backup.orders ON live.orders.id = backup.orders.id 
    SET live.orders.price = backup.orders.price 
    WHERE live.orders.date > '2017-01-01 00:00:00' 
+0

谢谢。我想我需要将'AND'换成'WHERE'? – Richard

+1

@Richard是...答案更新...是在哪里 – scaisEdge