zoukankan      html  css  js  c++  java
  • mysql报【unknown table in mulit delete】错的原因和解决办法

    今天写一个多表连接删除的DELETE语句,在执行的时候发现报错:unknown table in mulit delete,这里记录下原因。

    原来报错的DELETE语句:

    delete sys_project
    from sys_project as aa
    left join (
        select min(id) as id from sys_project 
        group by sysCode
    ) as bb
    on aa.id = bb.id
    where bb.id is null

    要注意的是,这样的语法在SQL Server是支持的,并不会报错。

    实际上,这是因为MySQL限制了,如果你为一个表指定了别名,那么当你再次使用这个表的时候,必须通过别名来使用该表。在上面的DELETE语句中,我给sys_project指定了别名aa,可是之后再次使用sys_project表的时候却没有通过别名aa去访问该表,因此MySQL就会报出这个在删除多行时找不到表的错误。

    修改的方法只要将sys_project表的直接使用改为使用别名aa访问即可:

    delete aa
    from sys_project as aa
    left join (
        select min(id) as id from sys_project 
        group by sysCode
    ) as bb
    on aa.id = bb.id
    where bb.id is null

    这就是MySQL报【unknown table in mulit delete】错的原因和解决方法。

    "很多时候我们是因为害怕失去,才不敢去拥有,然而有生之年,往往是一边得到,一边失去。"

  • 相关阅读:
    python框架之Flask(4)-上下文管理
    python框架之Flask(3)-Blueprint(蓝图)
    python框架之Flask(2)-路由和视图&Session
    python框架之Flask(1)-Flask初使用
    python中使用redis
    python之以字符串形式导入模块
    学习进度
    学习进度
    毕设进度
    毕设进度
  • 原文地址:https://www.cnblogs.com/yanggb/p/11158827.html
Copyright © 2011-2022 走看看