将一个表a的字段所有的内容复制到另一个表的字段(与a字段名相同)里
假设a表有name,age,score 三个字段。
如果发现b表里有a表的字段,则把a表里这个字段的内容来更新b表里与他相同字段的内容。
由于b表的字段名不确定,我不会写这个语句。
应当怎么办呢??
谢谢大家

解决方案 »

  1.   

    用一个储存过程就可以搞定!
    ADOQUERY1.EOF(a表)
    begin
    (储存过程变量):m_name,m_age,m_score 
    pare.m_name=adoquery1.fieldsvalue['name'].asstring;
    .
    .
    .
    调用储存过程
    end;
    至于储存乍写你就自已顶了!
      

  2.   

    通过syscolumns和sysobjects找到表和列,他们之间Id关联
      

  3.   

    /*现有两个表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
      

  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
    */
    --下面生成插入语句
    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