--要求两个表字段名都相同
--根据表1字段,拼一个update的sql语句,然后执行
Declare @SQL Varchar(1000)='Update 表1 Set '
Select @SQL=@SQL+'表1.'+name+'=表2.'+name+',' from sys.columns
where object_id=object_id('表1')
and name<>'id'
Set @SQL=STUFF(@SQL,LEN(@SQL),1,'')+' Where 表1.ID=表2.ID'
Exec(@SQL)
--先删除表1 id在表2的这些数据,然后在插入表2的数据
Begin Tran
Delete From 表1
From 表1 A Inner Join 表2
on 表1.id=表2.id
Insert Into 表1
Select * From 表2
Commit
--目前mssql没发现这样的sql
Update 表1 Set 表1.*=(Select * from 表2 where id=表1.id)
--Oracle有这样的写法
Update 表1
Set (表1.a1,表1.a2,表1.a3)=(Select b1,b2,b3 from 表2 where id=表1.id)
Update 表1
Set (表1.*)=(Select * from 表2 where id=表1.id)
温馨提示:内容为网友见解,仅供参考