共有 A B 两个表  每个表的字段基本相同 字段数量很多(40UP)
A表比B表多几个字段
我需要根据指定的ID把A表中的数据复制到B表当中(多余的几个字段的数据就直接舍弃了)
当然我可以使用 insert into B (...) value (..)
的方法 但是40多个字段实在太麻烦了
有简单一点的语句能解决问题的吗

解决方案 »

  1.   

    共有 A B 两个表  每个表的字段基本相同 字段数量很多(40UP)
    A表比B表多几个字段
    我需要根据指定的ID把A表中的数据复制到B表当中(多余的几个字段的数据就直接舍弃了)
    当然我可以使用 insert into B (...) value (..)
    的方法 但是40多个字段实在太麻烦了
    有简单一点的语句能解决问题的吗
    得到表中除userno_fm、userno_to的列(好象也不简单)
    例如:userno_fm、userno_to
    create table test(
           num int identity(1,1),
           userno_fm varchar(10),
           userno_to varchar(10),
           username varchar(10))
    select * from testdeclare @sql varchar(8000)
        select @sql=''
        select @sql=@sql+','+[name] from 
        (select [name] from syscolumns where object_id(N'[test]')=[id] and [name] not in ('userno_fm','userno_to')) A    set @sql='select '+stuff(@sql,1,1,'')+' from [test]'
        --print @sql
        exec (@sql)drop table test
      

  2.   

    insert B Select 字段1,字段2,字段10,....From A
    ---对应起来就OK了.
      

  3.   

    declare @sql varchar(8000)
        select @sql=''
        select @sql=@sql+','+[name] from 
        (select [name] from syscolumns where object_id(N'[test]')=[id] and [name] not in ('userno_fm','userno_to')) A  --这里写你不需要的列    set @sql='insert into b select '+stuff(@sql,1,1,'')+' from a'
        exec (@sql)
      

  4.   

    有个 select * into t2 from t1 where 1=2  的方法可以整个记录复制 
    但是只有目标表不存在的时候才可以用 没有复制记录的方法吗
      

  5.   

    ljfluan(不见光) ( ) 信誉:100  2007-9-20 12:54:50  得分: 0 
    有个 select * into t2 from t1 where 1=2  的方法可以整个记录复制 
    但是只有目标表不存在的时候才可以用 没有复制记录的方法吗
    ---------------------------------------------
    如果目标表存在的话,用insert t2 Select 字段1,字段2,字段10,....From t1 Where ...
    如果你想让记录达到同步的效果,用触发器