2012-10-08 41 views
0

我曾主表称为customer,其中,列插入多条记录到表中根据病情

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

现在我需要根据条件

  • 插入此值的记录多了一个表如果MainCustIDAssocativeCustID是相同的,那么只有1个条目是进入一个称为collection的表(即MainCustID条目)

  • 如果MainCustIDAssocativeCustID是不同的,那么2项将进入表称为 collectionMainCustIDAssocativeCustID

我怎样才能实现这个概念?希望我的问题是在这里清楚

我知道这可以基于光标做的是有没有其他的办法,我们可以做到这一点

任何帮助将是巨大的

感谢

王子

+0

在你第二个情况是两个条目是从哪里来的?从第一张桌子和另一个入口来的哪一张?你的意思是离开第二个表'集合'的条目,并添加第一个表'客户'的其他条目?? –

回答

2

你就能把它分为三个子任务:

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

0

没有使用光标你需要运行这些两个插入查询: -

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

insert into collection values (select MainCustId,AssocativeCustID from customer where MainCustID <> AssocativeCustID);