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

举报
吾日三省贾斯汀 发表于 2021/09/09 23:58:29 2021/09/09
2.5k+ 0 0
【摘要】 一、问题说明 今天弄数据库的时候要实现通过关联字段同步两张表的字段内容 关联字段为两张表的各自的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 建表


      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;
  
 

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

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

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

作者其他文章

评论(0

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

    全部回复

    上滑加载中

    设置昵称

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

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

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