请教一个比较复杂的SQL语句问题,高手请进

ncuhzh 2006-02-11 05:05:33
有这样一个情况:存在表A和表B,且两张表完全一样,但是由于用户的误操作把表A的部分数据修改了,现在我想用表B中的数据对表A中的数据进行还原,请教各位如何实现
...全文
155 点赞 收藏 11
写回复
11 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
ryan_www 2006-02-20
我也想问和LZ类似的问题, 关键在于怎样写这条update set from select 语句,同时不需要列举所有的字段,也就是实现单体记录的整个替换
回复
ncuhzh 2006-02-13
楼上的效率也很低哦,感觉是把数据重新写一遍,又或者我有几百个列呢
回复
-狙击手- 2006-02-13
update b set col1 = a.col1 ,col2 = a.col2 from a, b where a.id = b.id
回复
ncuhzh 2006-02-13
谢谢各位的支持,但是好像大家的答案效率都很低下,有没有更为高效的方法呢?首先是要找出A表与B表不同的数据,然后才用B表中的数据对A表进行更新,如A表和B表开始都是这样的:
ID column1 column2
1 one O
2 two T
但是A表可能现在是
ID column1 column2
1 one W
2 three T
目的是要用B表中的数据使A表还原,两个表的主键为ID
回复
JackyBeauty 2006-02-13
因为你只是一次性的工作,效率的因素在这里不是太重要,楼主不要太极端哦
回复
lxzm1001 2006-02-12
有主键
insert a select * from b where id not in(select id from a)
回复
JackyBeauty 2006-02-11
如果两个表可以按照某个唯一字段关联,并且这个唯一字段没有被修改的话
可以用Update A set A.Field=B.Field,...... From B Where A.ID=B.ID
回复
samfeng_2003 2006-02-11
你的表有没有主键呢?
回复
ncuhzh 2006-02-11
这样的动作也太大了吧,假如我的表A是不允许删除的呢?可不可以用更为有效的方法啊,请高手指教
回复
wangdehao 2006-02-11
truncate table 表A

insert 表A select * from 表B
回复
lsqkeke 2006-02-11
delete 表A

insert 表A select * from 表B

?
回复
相关推荐
发帖
疑难问题
创建于2007-09-28

2.1w+

社区成员

MS-SQL Server 疑难问题
申请成为版主
帖子事件
创建了帖子
2006-02-11 05:05
社区公告
暂无公告