利用关联查询更新一个表中的字段值等于等于另一个表的字段值
2018-02-27 10:37
295 查看
先说一下我的惨痛经历。我在操作数据库时,出现了两次重大失误,第一次是更新语句没有加where字句。第二次是加了where字句,但是条件写的不对,没有选对主键。想当然的以为第一个就是主键,谁知道它不是,第一个字段的竟然值都一样。两次都是本来想更新一条数据,结果更新了整张表。第一次是技术总监把数据恢复了,第二次是我自己恢复了。所以在更新数据库时一定不要忘了加where字句,加了where字句也要在更新之前再次检查where查询出来的记录条数和你想要更新的条数是否一致。三思而后行啊。
下面说一下第二次的情况:
有两张用户表,表结构如下
两张表关联的字段是UserId,applicationId是每条记录值都一样。我想要更新MemberShip的email值,结果把applicationId当作了主键,写成了where字句的条件,然后更新了整张表。错误操作后截图如下:
。
下面是我的恢复数据的sql语句
这样就把User表中的UserName的值根据UserId的关联关系修改了MemberShip中的Emai的值。一共有将近800条记录啊,要是手动修改,得改到什么时候啊。
下面说一下第二次的情况:
有两张用户表,表结构如下
两张表关联的字段是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条记录啊,要是手动修改,得改到什么时候啊。
相关文章推荐
- mysql更新一个表里的字段等于另一个表某字段的值
- mysql更新一个表里的字段等于另一个表某字段的值
- mysql更新一个表里的字段等于另一个表某字段的值
- mysql如何更新一个表中的某个字段值等于另一个表的某个字段值
- mysql如何更新一个表中的某个字段值等于另一个表的某个字段值
- mysql如何更新一个表中的某个字段值等于另一个表的某个字段值
- mysql更新一个表里的字段等于另一个表某字段的值
- mysql如何更新一个表中的某个字段值等于另一个表的某个字段值
- 更新一个表的字段值等于另一个表的字段值
- mysql如何更新一个表中的某个字段值等于另一个表的某个字段值
- mysql如何更新一个表中的某个字段值等于另一个表的某个字段值
- mysql更新一个表里的字段等于另一个表某字段的值
- 更新一个表的字段值等于另一个表的字段值
- mysql更新一个表里的字段等于另一个表某字段的值实例
- SQL两表之间:根据一个表的字段更新另一个表的字段
- mysql将一个表的字段更新到另一个表中
- sql批量更新一个字段,全该字段等于一个固定字符串与id拼接值
- SQL两表之间:根据一个表的字段更新另一个表的字段
- mysql将一个表中的字段值更新到另一个表中指定字段中
- Oracle 用一个表字段更新另一个表字段三种方法