在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