现有两个表a表,b表
a表的字段有name sno  id  course(有内容的)
b表的字段有name sno(空表)
现要求将a表里与b表相同的字段的内容弄到b表来
怎么办

解决方案 »

  1.   

    insert into b (name,sno) select name,sno from a
      

  2.   

    insert into b (name,sno) select distinct name,sno from a
      

  3.   

    insert into b(name sno) select name,sno from a
    这个可以。
    但是下面的问题,有谁能帮我解决一下。
    这时不是从a表里找了,而是从另外一个form里的adoquery查询出来的记录里找,应当怎么写。
      

  4.   

    /*现有两个表a表,b表
    a表的字段有name sno  id  course(有内容的)
    b表的字段有name sno(空表)*/
    /*创建测试数据
    create table a (name varchar(20),sno int ,id int,course varchar(20))
    go
    insert into a select 'aa',1,1,'aaaa'
    union select 6 'bb',2,2,'bbbb'
    go
    create table b (name varchar(20),sno int)
    go
    */
    --下面生成插入语句
    declare @s varchar(8000)
    declare @s1 varchar(8000)
    set @s='insert into b('
    set @s1='select 'select @s=@s+ b.name+',' from 
    (select c.name from syscolumns c inner join sysobjects o on c.id=o.id where o.name='a') a,
    (select c.name from syscolumns c inner join sysobjects o on c.id=o.id where o.name='b') b
    where a.name=b.nameselect @s1=@s1+ b.name+',' from 
    (select c.name from syscolumns c inner join sysobjects o on c.id=o.id where o.name='a') a,
    (select c.name from syscolumns c inner join sysobjects o on c.id=o.id where o.name='b') b
    where a.name=b.nameset @s=substring(@s,1,len(@s)-1)+') '
    set @s1=substring(@s1,1,len(@s1)-1) +' from a'
    print @s+@s1
    --这里生成了插入语句
    --insert into b(name,sno) select name,sno from a
    exec(@s+@s1)
    select * from b
    go
    drop table a
    drop table b
      

  5.   

    最好放到存储过程中
    /*现有两个表a表,b表
    a表的字段有name sno  id  course(有内容的)
    b表的字段有name sno(空表)*/
    /*创建测试数据
    create table a (name varchar(20),sno int ,id int,course varchar(20))
    go
    insert into a select 'aa',1,1,'aaaa'
    union select 6 'bb',2,2,'bbbb'
    go
    create table b (name varchar(20),sno int)
    go
    */
    --下面生成插入语句
    create proc pInsert
    as
    declare @s varchar(8000)
    declare @s1 varchar(8000)
    set @s='insert into b('
    set @s1='select 'select @s=@s+ b.name+',' from 
    (select c.name from syscolumns c inner join sysobjects o on c.id=o.id where o.name='a') a,
    (select c.name from syscolumns c inner join sysobjects o on c.id=o.id where o.name='b') b
    where a.name=b.nameselect @s1=@s1+ b.name+',' from 
    (select c.name from syscolumns c inner join sysobjects o on c.id=o.id where o.name='a') a,
    (select c.name from syscolumns c inner join sysobjects o on c.id=o.id where o.name='b') b
    where a.name=b.nameset @s=substring(@s,1,len(@s)-1)+') '
    set @s1=substring(@s1,1,len(@s1)-1) +' from a'
    print @s+@s1
    --这里生成了插入语句
    --insert into b(name,sno) select name,sno from a
    exec(@s+@s1)
    select * from b
    go