在sql server中,我们可以使用下面的update语句对表进行更新操作。
update t1 set t1.xx= (select yy from t2) ;
但是mysql不支持update set 直接使用select的结果,那么怎么在mysql update中使用select的结果呢?
我们可以换一种解决方法,也就是使用inner join,上面的sql语句在mysql中可以改写成下面方式:
update t1 inner join (select yy from t2) t3 set t1.xx = t2.yy
示例:
student表:
id name class_id
1 张三 班级1
2 李四 班级2
class表:
id name
1 班级1
2 班级2
3 班级3
通过update inner join更新student表中的class_id字段,由班级名称更新为班级id,具体mysql语句为:
update student inner join (select id,name from class) c set student.class_id = c.id where student.class_id = c.name