如果你的两个表字段对应是指位置对应,而不是名称都相同的话,就用:
declare @sql varchar(8000)
set @sql=''
select @sql=@sql+',a.['+a.name+']=b.['+b.name+']'
from (
select name,colid syscolumns
where object_id('表A')=id and name<>'myid' and status<>0x80
) a inner join (
select name,colid syscolumns
where object_id('表B')=id and name<>'myid' and status<>0x80
) b on a.colid=b.colid
set @sql='update 表A set '+substring(@sql,2,8000)
+' from 表A a inner join 表B b on a.myid=b.myid'
exec(@sql)
如果你的两个表字段对应是指位置对应,而不是名称都相同的话,就用:
declare @sql varchar(8000)
set @sql=''
select @sql=@sql+',a.['+a.name+']=b.['+b.name+']'
from (
select name,colid syscolumns
where object_id('表A')=id and name<>'myid' and status<>0x80
) a inner join (
select name,colid syscolumns
where object_id('表B')=id and name<>'myid' and status<>0x80
) b on a.colid=b.colid
set @sql='update 表A set '+substring(@sql,2,8000)
+' from 表A a inner join 表B b on a.myid=b.myid'
exec(@sql)
declare @sql varchar(8000)
set @sql=''
select @sql=@sql+',a.['+name+']=b.['+name+']'
from syscolumns
where object_id('表A')=id and name<>'myid' and status<>0x80
set @sql='update 表A set '+substring(@sql,2,8000)
+' from 表A a inner join 表B b on a.myid=b.myid'
exec(@sql)
select 表A.myid into #temp from 表A,表B where 表A.myid=表B.myid
delete 表A from 表B where 表A.myid=表B.myid
insert into 表A select * from 表B where 表B.myid in (select myid from #temp)
更正:
select 表A.myid into #temp from 表A,表B where 表A.myid=表B.myid
delete 表A from 表B where 表A.myid=表B.myid
set identity_insert 表A on
insert 表A select * from 表B where 表B.myid in (select myid from #temp)
set identity_insert 表A off
--先把两表相同的myid保存到临时表中
select 表A.myid into #temp from 表A,表B where 表A.myid=表B.myid
--删除 表A中和表B有相同myid的记录
delete 表A from 表B where 表A.myid=表B.myid
--插入表A中,表B和表A中有相同myid的记录
insert 表A select * from 表B where 表B.myid in (select myid from #temp)
--去掉临时表
drop table #temp
select 表A.myid into #temp from 表B where 表A.myid=表B.myid
delete 表A from 表B where 表A.myid=表B.myid
set identity_insert 表A on
insert 表A select * from 表B where 表B.myid in (select myid from #temp)
set identity_insert 表A off
--写错了
select 表A.myid into #temp from 表A where 表A.myid=表B.myid
delete 表A from 表B where 表A.myid=表B.myid
insert 表A select * from 表B where 表B.myid in (select myid from #temp)
drop table #temp
select 表A.myid into #temp from 表B where 表A.myid=表B.myid
delete 表A from 表B where 表A.myid=表B.myid
insert 表A select * from 表B where 表B.myid in (select myid from #temp)
drop table #temp