如何用sql语句更新某个表所有记录的指定列数据为另一列(另一个表的指定列)数据?

目录

问题现象:

问题分析:

解决方法:


问题现象:

今天想到了一个这样的需求,如何用sql语句更新某个表所有记录的指定列数据为另一列(另一个表的指定列)数据?


问题分析:

从问题的需求可举例如下:

第一种: 假如现在有一个表 T 含有包括 id , t_id 在内的多个字段; 

现在想把 T 表 中 所有记录 id字段 这一列的数据, 修改为 T 表 t_id字段 这一列的数据;

(也就是将每一条记录的 id字段的值 修改为 t_id字段的值)

第二种: 假如现在有两个表 A , B : 其中 A表 含有 id 字段, 但不含有 t_id 字段;  B表 含有 id , t_id 字段;

现在想把 A 表 中 所有记录 id字段 这一列的数据, 修改为 B 表 t_id字段 这一列的数据;

(也就是将 A 表 中每一条记录的 id字段的值 修改为 B 表 t_id字段的值)

以上两种情况在学习工作中,很多小伙伴都会遇到过;这里我们先分析一下这两种情况的情况:

1.第一种是单个表中已经有了两个字段(id 和 t_id), 因此只需要基于单表做 update 操作即可;

2.第二种需要操作两个表,因为 A表 没有 t_id字段, 同时这两个表必然要有联系(A, B表都有id字段, 且A中所有的id在B中都能找到)才能进行修改成功.


解决方法:

第一种(单表操作): 执行以下代码即可:

update T

set id = t_id

 

第二种(多表操作): 代码如下:

update A

set id = B.qx_id (或 set A.id = B.qx_id )

from B

where A.id = B.id 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值