美文网首页简友广场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