MySQL表关联更新

背景:

有两张表,一张class信息表,一张student信息表,但student表里的信息存在错误,需要用class表中的信息去更新student表数据。

在这里插入图片描述

 在这里插入图片描述

 
方法一:

update student_info s 
set class_name = (select class_name from class_info where class_id = s.class_id)

【结果】:通过关联字段关联上的数据,内容相应更新;没关联上的,内容变为null。


方法二:

update student_info s, class_info c set s.class_name = c.class_name
where s.class_id = c.class_id

【结果】:通过关联字段关联上的数据,内容相应更新;没关联上的,内容不变。


方法三(不推荐):

update student_info s
left join class_info c on s.class_id = c.class_id
set s.class_name = c.class_name


【结果】:通过关联字段关联上的数据,内容相应更新;没关联上的,内容变为null。

【注意】:left join这种写法很容易写错,会导致关联左表的信息被更新,right join同理。而join的写法类同方法二,因此结果也与方法二相同。

猜你喜欢

转载自blog.csdn.net/LiZhen314/article/details/131807926