关系型数据库关联更新数据汇总

先给出需求,有2张表,学生表和分数表,两种表都有一个分数列,但是这两列的值不一致,现在需要更新学生表,让学生表中的值等于分数表中的值。
初始化脚本如下:

create table student
(
  id varchar(100) primary key,
  name varchar(50),
  addr varchar(50),
  score int
);

create table score
(
  stuId varchar(100) primary key,
  score int
);

insert into student(id,name,addr,score) values('1','张三','重庆',100);
insert into student(id,name,addr,score) values('2','张三2','重庆',120);
insert into student(id,name,addr,score) values('3','张三3','重庆',150);

insert into score(stuId,score) values('1',10);
insert into score(stuId,score) values('2',12);
insert into score(stuId,score) values('4',50);

数据展示如下:

   

mysql更新脚本:

update student a inner join score b on a.id=b.stuId set a.score=b.score;

oracle更新脚本:

-- 方式一
UPDATE (
select t1.score t1score,t2.score t2score from student t1 inner join score t2 on t1.id=t2.stuId
)t
set t1score =t2score;

-- 方式二
merge into student
using (select stuId,score from score) t
on (t.stuId = student.id)
when matched then 
  update set student.score = t.score;

Sqlserver更新脚本: 

update a set a.score=b.score from student a inner join score b on a.id=b.stuId;
原文地址:https://www.cnblogs.com/duanjt/p/14166861.html