美文网首页简友广场Java简述
[Err] 1093 - You can’t specify t

[Err] 1093 - You can’t specify t

作者: 牛哞哞杂记 | 来源:发表于2019-11-15 22:59 被阅读0次

使用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)

相关文章

网友评论

    本文标题:[Err] 1093 - You can’t specify t

    本文链接:https://www.haomeiwen.com/subject/sljeictx.html