2016-05-13 5 views
-2

プライマリキーの新しい値で古いテーブルのプライマリキーを更新したいとします。プライマリキーの新しい値でテーブルのプライマリキーを更新したい

旧テーブル

catalogId|columnB 

000987|abc 
000765|xyz 

新しいテーブル

catalogId|columnB 

100001|qwe 
100002|uop 

注:私は何を達成したいことは、私は、新しい値は100001によって置き換えられなければならない000987、すなわち古いテーブルを更新したいです と000765と100002など。たくさんのレコードがあります。

一般的なクエリを使って更新を行うにはどうすればよいですか?

+4

mapping_table old_catalogID | new_catalogID | old_columnB | new_columnB 

としてインポートマッピングテーブル構造を仮定し

は、その後、あなたの更新クエリは次のようになりますか?両方のテーブルの列Bの値が一致しません。 –

+0

私は新しいcatalogidにマッチする古いcatalogidを持つマッピングシートを持っています。 データベース内の古いカタログIDを、新しくマップされた新しいカタログIDで更新する必要があります。 参照列はありません。それは直接更新されます。 – qwerty

+0

マッピングシートをテーブルにインポートし、そのテーブルでINNER JOINを実行して更新を実行できます。 –

答えて

0

まず、マッピングシートをデータベースとしてテーブルとしてインポートするか、外部テーブルとして使用する必要があります。アップデートを実行したいです何を基準に

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); 
関連する問題