2017-03-08 85 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