mysql:error 1093 update子查询
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql:error 1093 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子查询的主要内容,如果未能解决你的问题,请参考以下文章
mysql 的delete from 和update子查询限制
错误 1093:MySQL 无法在 FROM 子句中指定更新的目标表
关于mysql 5.7版本“报[Err] 1093 - You can't specify target table 'XXX' for update in FROM clau