数据库如何从另一个表,更新一整行的数据?(列项目很多的情况)

比如一个表1有ID,A,B,C,D....................100多个项目

update 表1
SET 表1.所有项目=表2.所有项目
where 表1.ID=表2.ID

这种感觉。

--要求两个表字段名都相同
--根据表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)

温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答