mysql语句update之联合更新
最近遇到一个小问题,数据库方面的,两张表有主外键关系,其中一个表添加一个字段,在另一个表中是有值的,并把这个字段同步更新到这张表中,说起来有点绕,还是看具体案例吧。
学生表(student)
![20191203095907434.png][]
班级表(class)
由以上两张表可知,一个班级对应多个学生,所以将班级表的主键作为学生表的外键 。
现在的需求是在学生表中新增一个class\_name的字段,用来标明每个学生所属的班级,如下:
![20191203100225330.png][]
那么现在的任务是,在student中将class_name这个字段相应的填充上去,比方说:张三和李四的class_id=1,他的班级是一班,王五的class_id=2,他的班级是二班,赵六的class_id=3,他对应的班级应该是三班。这样一一对应起来,如果一个一个填充上去的话,数据量达到几千上万级别,还不累死,那么这就涉及到了update语句的联合更新。直接发sql吧:
#第一种方式
UPDATE class AS c
INNER JOIN student AS s
ON c.id = s.class_id
SET s.class_name = c.name;
#第二种方式
UPDATE class AS c,student AS s
SET s.class_name = c.name
WHERE c.id = s.class_id;
以上两种方式都可以达到同样的效果。
还没有评论,来说两句吧...