A表的数据结构如下: 主键是id,departid.id是根据departid来从1开始递增,相同的departid算是一组.departid不同,id依然从1开始递增
A表
  id       departid  
  1         0        
  2         0         
  1         1
 
  B表的数据结构如下: 主键也是id,departid.id递增规则同A表的一样.
B表
  id      departid     nameId     sex
  1         0          xxx       1   
  2         0          xxx       1   
  3         0          xxx       1     
  4         0          xxx       1   
  5         0          xxx       1   
  6         0          xxx       1  
  1         1          aaa       1
  2         1          aaa       1
 
现在要求,将A表和B表的数据通过SQL文插入到C表当中,希望C表的结构如下,根据departid,将A B表的数据结合起来.C表 主键也是id,departid
id       departid   nameId     sex
  1         0         xxx       1   
  2         0         xxx       1   
  3         0         xxx       1     
  4         0         xxx       1   
  5         0         xxx       1   
  6         0         xxx       1  
  7         0         xxx       1   
  8         0         xxx       1   
  9         0         xxx       1     
  10        0         xxx       1   
  11        0         xxx       1   
  12        0         xxx       1 
  1         1         aaa       1
  2         1         aaa       1想请教一下,对C表中的数据如何用SQL文去插入,id的递增规则参照C表.

解决方案 »

  1.   

    结果是怎样得出的?
    两表通过departid连接?
      

  2.   

    现在我能做到的是可以根据id自动发番.
    insert into C (
    select @rownum := @rownum+1 AS id, b.departid, b.nameId, b.sex from A a, B b where a.departid = b.departid 
    )
    这样做的结果是从1开始一直往后发番.现在想要的结果是deparid不同,还是希望从1开始发番,SQL文如何实现.
      

  3.   

    发番什么意思?因为你的表中没有唯一标识的字段,故要增加辅助列AID,类型自增,假设
    你的表名为TT
    SELECT A.*,(SELECT COUNT(*) FROM TT WHERE departid=A.departid AND 
    nameId=A.nameId AND  sex=A.sex AND AID>=B.AID) AS MC FROM TT A