1

これは問題の非常に単純化されたグラフィカルな状況です:http: //i.stack.imgur.com/5NoRe.png

異なるスキーマに2つのDBがあります。古い黄色のDB(1つは単純でプレーンなテーブル)と新しい緑色のDB(上記のような関係があります)です。

問題は、OldDB(40k行以上)の情報をNewDBに移行したいのですが、この関係の変換に固執しています。OldDBでは、センターごとに異なるフィールドがあり、CHAR(1)=Yまたは=Nであるかどうかに応じて、何らかのアクションが実行されているかどうかに応じて異なります。

これで、NewDBには、独自のIDを持つ別のテーブルにこれらのセンターがあり、メインテーブルの多対多に関連付けられています(b)。

したがって、私が欲しいのは、Old.DB(最大20)の各単一センターを調べ、たとえば、になったら、とcenter14 CHAR(1) = Yを設定することです。NewDB.center_has_b.center_id = 14NewDB.center_has_b.b_id = OldDB.oldb.oldb_id

私はMySQLの初心者ですが、運が悪かったので、このようなことを考えていました。

INSERT NewDB.center_has_b (center_id, b_id) (N, (SELECT oldb_id from OldDB.oldb WHERE centerN = 1));
4

1 に答える 1

0

これを試して:

INSERT NewDB.center_has_b (center_id, b_id)
 select 'N', oldb_id from OldDB.oldb WHERE centerN = 1

編集:これは、この回答の最初のコメントに基づいています

insert into center_has_b (center_id,b_id)
select c.enter_id ,old.b_id
from centers c
cross join old.b
where Allcenters = 'Y'
于 2012-09-25T09:13:47.043 に答える