利用关联查询更新一个表中的字段值等于等于另一个表的字段值

先说一下我的惨痛经历。我在操作数据库时,出现了两次重大失误,第一次是更新语句没有加where字句。第二次是加了where字句,但是条件写的不对,没有选对主键。想当然的以为第一个就是主键,谁知道它不是,第一个字段的竟然值都一样。两次都是本来想更新一条数据,结果更新了整张表。第一次是技术总监把数据恢复了,第二次是我自己恢复了。所以在更新数据库时一定不要忘了加where字句,加了where字句也要在更新之前再次检查where查询出来的记录条数和你想要更新的条数是否一致。三思而后行啊。


下面说一下第二次的情况:
有两张用户表,表结构如下
这里写图片描述这里写图片描述
两张表关联的字段是UserId,applicationId是每条记录值都一样。我想要更新MemberShip的email值,结果把applicationId当作了主键,写成了where字句的条件,然后更新了整张表。错误操作后截图如下:
这里写图片描述
下面是我的恢复数据的sql语句

begin tran
update m
set m.Email=u.UserName
from aspnet_Membership m ,aspnet_Users u
where m.UserId=u.UserId

update aspnet_Membership set Email=Email+'@default.com'

update aspnet_Membership set LoweredEmail=Email

select * from aspnet_Membership
commit tran
rollback tran

这样就把User表中的UserName的值根据UserId的关联关系修改了MemberShip中的Emai的值。一共有将近800条记录啊,要是手动修改,得改到什么时候啊。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值