有2张表:A表有字段ID,Name(ID为主键)
         B表有字段ID,Name(ID为主键)
现将A表的数据全部复制到B表中,已知B表中有很多ID与A表中的ID相同
请问在不修变2个表的结构下如何实现?

解决方案 »

  1.   

    晕,我想了很久还是没想出来,是不是用个什么关键字啊?但用select A into B.....又不对
      

  2.   

    从你的提问里搞不起清楚到底需要insert还是update
    --如果是insert 
    insert into B表(ID,Name)
          select ID,Name from A表--如果是update
    update B表 set Name=(select Name from A表 where id=B表.id)
      

  3.   

    你不能select into。
    只能用 insert into。
      

  4.   

    insert into B表(ID,Name)
    select ID,Name from A表 m
    where not exists(select 1 from B表 s where m.id=s.id)
      

  5.   

    你没说清楚,重复的数据怎么处理?是保留B表的数据,还是用A表的数据覆盖B表的???
      

  6.   

    是有A,B两张表由于他们ID有相同的数据,ID又是主键,要将A表的数据复制到B表中
      

  7.   

    要B表的数据都要存在,A表的数据全到B表中去,不能覆盖B表的数据
      

  8.   

    我不知道这SQL怎么写,能具体点不。。
      

  9.   

    楼主,你说清楚表的结构。
    唯一类型,int类型,自增类型,还有他们有没有默认值,这些都要考虑。
    你的意思肯定是想 将b表的数据全部插到a表去。但是因为有相同id,所以报错。
      

  10.   

    insert into B表(ID,Name)
    select ID,Name from A表 m
    where not exists(select 1 from B表 s where m.id=s.id)
    上面的代码就不会报错了。
      

  11.   

    如果是自增主键,不修改表结构是不可能实现的,除非用update语句,相同id的记录总有一个表的是新的吧
      

  12.   

    UPDATE B表 SET Name= from A表 A INNER JOIN B表 B on A.ID=B.ID insert into B表(ID,Name)
    select ID,Name from A表 A LEFT JOIN B表 B on A.ID=B.ID
    WHERE B.ID IS NULLUPDATE 和 INSERT 语句顺序最好不要调换,如果你理解这个了,对你好处;
      
     
      

  13.   

    这样应该可以 insert into B表(id,Name) select (select max(id)from b表)+id, Name from A表 
      

  14.   

    --数据量大的话,还是先导出A表数据,再导入B表中去。
    --导入时候只导入A表中的NAME字段的值就可以了。
      

  15.   

    --insert into B(name,Fields)
    --select A.name,B.Fields from A left join B on A.name=b.name
    --where B.name=null;