2016-05-13 81 views
-2

我想用主鍵的新值更新我舊錶的主鍵。我想用主鍵的新值更新表的主鍵

舊錶

catalogId|columnB 

000987|abc 
000765|xyz 

新表

catalogId|columnB 

100001|qwe 
100002|uop 

注: 我想實現的是我想用新的值,即000987必須由100001替換更新舊錶和000765與100002等。有很多記錄。

如何編寫通用查詢來執行更新?

+4

在你要執行更新的標準是什麼?兩個表的列B值不匹配。 –

+0

我有一個映射表,它具有與新的catalogid相匹配的舊catalogid。 我必須使用新映射的新catalogid更新數據庫中的舊catalogid。 這裏沒有參考列。這將是直接更新。 – qwerty

+0

您可以將該映射表導入到表中,然後與該表執行INNER JOIN以執行更新。 –

回答

0

首先,您需要將數據庫中的映射表導入爲表格或將其用作外部表格。

假設這進口的映射表結構,是

mapping_table 
old_catalogID | new_catalogID | old_columnB | new_columnB 

那麼你的更新查詢會是這樣的:

update ot.old_table ot 
    set ot.catalogId = (select mt.new_catalogID from mapping_table mt 
         where mt.old_catalogID = ot.catalogId), 
     ot.columnB = (select mt.new_columnB from mapping_table mt 
         where mt.old_columnB = ot.columnB);