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

举报
吾日三省贾斯汀 发表于 2021/09/09 23:58:29 2021/09/09
【摘要】 一、问题说明 今天弄数据库的时候要实现通过关联字段同步两张表的字段内容 关联字段为两张表的各自的id,同步B表的b、c、d字段内容到A表的b、c、d字段内容。PS:把一张表中的某个字段内容同步到另一张表的字段,前提条件是两张表要有关联字段。 二、解决方法 2.1 建表 create table A(id int primary...

一、问题说明

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

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

二、解决方法

2.1 建表


  
  1. create table A(
  2. id int primary key
  3. b varchar(16),
  4. c varchar(16),
  5. d varchar(16)
  6. )engine=InnoDB;
  7. create table B(
  8. id int primary key
  9. b varchar(16),
  10. c varchar(16),
  11. d varchar(16)
  12. )engine=InnoDB;

2.2 初始化数据


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

2.3 更新B表数据到A表

查询A、B表


  
  1. select id,b,c,d from A;
  2. select id,b,c,d from B;

INNER内连接实现(最简单)


  
  1. update A INNER JOIN B ON A.id = B.id
  2. set
  3. A.b = B.b,
  4. A.c = B.c,
  5. A.d = B.d;

子查询实现


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

PS:

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


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


  
  1. select id,b,c,d from A;
  2. select id,b,c,d from B;

文章来源: blog.csdn.net,作者:吾日三省贾斯汀,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/JustinQin/article/details/79010045

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。