0

customerwhere列と呼ばれるメインテーブルがあります

MainCustID   AssocativeCustID
11           22
33           33
45           56
38           90
56           1234
356          356

条件に基づいて、この値レコードをもう 1 つのテーブルに挿入する必要があります。

  • MainCustIDとが同じである場合AssocativeCustID、1 つのエントリだけが呼び出されたもう 1 つのテーブルに移動しますcollection(つまり、MainCustIDエントリ) 。

  • MainCustIDAssocativeCustIDが異なる場合、2 つのエントリが(collectionMainCustID)AssocativeCustIDという名前のテーブルに入れられます。

どうすればこのコンセプトを達成できますか?

これはカーソルに基づいて実行できることはわかっていますが、これを達成できる他の方法はありますか。

4

2 に答える 2

2

次の 3 つのサブタスクに分割できます。

insert into Collection
    select MainCustID
    from Customer
    where MainCustID = AssocativeCustID;
insert into Collection
    select MainCustID
    from Customer
    where MainCustID <> AssocativeCustID;
insert into Collection
    select AssocativeCustID
    from Customer
    where MainCustID <> AssocativeCustID;
  1. 最初MainCustIDに、それが等しい場所にすべて挿入しますAssocativeCustID
  2. それMainCustIDから、それがAssocativeCustID
  3. それから反対側、AssocativeCustIDそれが等しくないすべての場所MainCustID

ここにデモがあります: http://sqlfiddle.com/#!2/60026/1/0

于 2012-10-08T08:29:40.453 に答える
0

カーソルを使用せずに、次の2つの挿入クエリを実行する必要があります。-

insert into collection values (select MainCustId from customer where MainCustID = AssocativeCustID);

insert into collection values (select MainCustId,AssocativeCustID from customer where MainCustID <> AssocativeCustID);
于 2012-10-08T08:43:42.510 に答える