MySQL--如何通过关联字段同步A、B两张表的字段内容

一、问题说明

今天弄数据库的时候要实现通过关联字段同步两张表的字段内容

关联字段为两张表的各自的id,同步B表的b、c、d字段内容到A表的b、c、d字段内容。
PS:把一张表中的某个字段内容同步到另一张表的字段,前提条件是两张表要有关联字段。

二、解决方法

2.1 建表

create table A(
id int primary key, 
b varchar(16),
c varchar(16),
d varchar(16)
)engine=InnoDB;

create table B(
id int primary key, 
b varchar(16),
c varchar(16),
d varchar(16)
)engine=InnoDB;

2.2 初始化数据

insert into A(id,b,c,d) values(1,'A-b-1','A-c-1','A-d-1');
insert into A(id,b,c,d) values(2,'A-b-2','A-c-2','A-d-2');

insert into B(id,b,c,d) values(1,'B-b-1','B-c-1','B-d-1');
insert into B(id,b,c,d) values(2,'B-b-2','B-c-2','B-d-2');

2.3 更新B表数据到A表

查询A、B表

select id,b,c,d from A;
select id,b,c,d from B;

INNER内连接实现(最简单)

update A INNER JOIN B ON A.id = B.id
set
A.b = B.b,
A.c = B.c,
A.d = B.d;

子查询实现

update A a
set
a.b = (select b.b from B b where a.id= b.id),
a.c = (select b.c from B b where a.id= b.id),
a.d = (select b.d from B b where a.id= b.id)
where exists (select 1 from B c where a.id= c.id);

PS:

exists 用于检查子查询是否至少会返回一行数据(即exists 指定一个子查询,检测行的存在);
where exists 该子查询实际上并不返回任何数据,而是返回值True或False


内连接、子查询实现都可以,最后查询A、B表

select id,b,c,d from A;
select id,b,c,d from B;

  • 6
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

吾日三省贾斯汀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值