背景:
有两张表,一张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的写法类同方法二,因此结果也与方法二相同。