使用mysql时,运行一段修改语句报错
问题:
[Err] 1093 - You can’t specify target table ’ ’ for update in FROM clause
原因:
这个错误的原因是,更新这个表的同时又查询了这个表。
我为了实现修改除某列以外的所有数据,所以写了一个sql,出现了这样的错误。
解决办法:
可以改变思路,在select外边套一层,让数据库认为你不是查同一表。
sql:
update 表名 set 字段=字段值 where id not in(SELECT * FROM (select MAX(id) from 表名 where 条件) as temp)
举个栗子:
下面这个是会出现错误的:
update user set name='略略' where id not in(select id from user where name = '牛哞哞')
这个是可以实现修改除某列以外所有数据的:
update user set name='略略' where id not in(SELECT * FROM (select id from user where name = '牛哞哞') as temp)
网友评论