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】错的原因和解决方法。

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

  • 相关阅读:
    scheduletask任务调度(2间隔时间)
    scheduletask任务调度
    初始webservice
    ssh整合
    aop
    自定义框架(MyMvc)
    数据校验
    原生态ajax
    struts2国际化
    文件下载
  • 原文地址:https://www.cnblogs.com/yanggb/p/11158827.html
Copyright © 2011-2022 走看看