码迷,mamicode.com
首页 > 数据库 > 详细

mysql:error 1093 update子查询

时间:2017-12-22 19:40:34      阅读:166      评论:0      收藏:0      [点我收藏+]

标签:update

一、 需求

要将base_info.name以wl_开头的数据的status字段更新为2


二、执行


Update base_info

Set a.status=2

Where (select id from base_info where name like ‘%xx%’)

 

执行时,提示1093错误,

ERROR 1093 (HY000): You can't specify target table 't' for update in FROM clause 。

mysql不支持修改一个表的时候子查询不能是同一个表。


三、 优化

通过临时表解决这个问题

方法一:

Update base_info

Set a.status=2

Where id in ( select * from (select id from base_info where name like ‘%xx%’ ) tmp )

 

方法二:

update base_info b

join (select id from base_info where act_name like 'wlq_%') tmp

on tmp.id= b.id

set b.expand1=2


mysql:error 1093 update子查询

标签:update

原文地址:http://blog.51cto.com/2338053/2053706

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!