比如说2个表:
data1的字段有id content
data2的字段有number id content
如果用SQL语句实现把表data1中的内容传到表data2中,data2的number自动增加
如何实现?

解决方案 »

  1.   

    在Ms sql 中:
    若number设为自动增加1即在sql server中是identity的,则
     insert into data2(id,content) select id, content from data1;
    若number不是这样的,就一个个取,填进去就行了,sql和存储过程都行
      

  2.   

    若number设为自动增加1即在sql server中是identity的这句话是什么意思?我运行的结果显示"当INDENTITY_INSERT设置为OFF时,不能向表data2中的标识列插入显式值."
      

  3.   

    你说的一个个取,再添进去我也有想过,不过这样一来,如果删除了data2中的数据,再进行添加,number的值就不对了啊!还有,一个个取,怎么取啊?
      

  4.   

    存储过程的例子:
     create procedure aa as
     begin
        declare integer @id, varchar(255) @content;
        declare integer @CurrNum; 
        DECLARE c1 CURSOR FOR SELECT id,content FROM data1;  
        OPEN c1;
        FETCH c1 INTO @id,@content;
      WHILE @@fetch_status = 0  
      BEGIN
        SELECT @CurrNum=select max(Number) from data2;
        if @@rowcount=0 
            Set @CurrNum=1;
        else
            Set @Currnum= @Currnum +1;
        Insert Into data2(number,id,content) values(@CurrNum,@id,@Content);
      
        FETCH c INTO @id,@content;
      END
      CLOSE      C1;
      DEALLOCATE c1;
    end我直接手工写的,你可以参考调试一下(Ms sql server环境),这种方法,也可以用sql在界面上来实现,只是效率太低了。