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

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

原文地址:https://www.cnblogs.com/yanggb/p/11158827.html

时间: 2024-08-05 10:04:23

mysql报【unknown table in mulit delete】错的原因和解决办法的相关文章

在CentOS中安装32位或64位MySql报错error: Failed dependencies解决办法

在CentOS中安装MySql报错error: Failed dependencies解决办法 安装64位MySql报错内容如下:error: Failed dependencies:        libaio.so.1()(64bit) is needed by MySQL-server-5.6.19-1.el6.x86_64    libaio.so.1(LIBAIO_0.1)(64bit) is needed by MySQL-server-5.6.19-1.el6.x86_64    

mysql数据库二进制初始化出现:170425 17:47:04 [ERROR] /application/mysql//bin/mysqld: unknown option '--skip-locking' 170425 17:47:04 [ERROR] Aborting 解决办法

[[email protected] mysql]# ./scripts/mysql_install_db --user=mysql --basedir=/application/mysql/ --datadir=/application/mysql/data/Installing MySQL system tables...170425 17:47:04 [ERROR] /application/mysql//bin/mysqld: unknown option '--skip-locking

重启mysql提示:The server quit without updating PID file问题的解决办法

今天因为需要开启事件调度器event_scheduler,所以修改了mysql的配置文件/etc/my.cnf 就因为配置多了个分号,导致一直启动失败,如下图所示: 然后去网上搜了帖子(MySQL提示:The server quit without updating PID file问题的解决办法http://www.jb51.net/article/48625.htm),按照里面几种提供的方案都不能解决,于是查看mysql错误日志 #tail -n 400 /lutong/mysql/erro

Failed to issue method call: Unit mysql.service failed to load: No such file or directory的解决办法

Failed to issue method call: Unit mysql.service failed to load: No such file or directory的解决办法 作者:chszs,转载需注明.博客主页:http://blog.csdn.net/chszs 1.软件环境: OpenSUSE 13.1 x64 MySQL 5.6.20 x64 2.采用RPM包安装MySQL 5.6.20 # rpm -ivh MySQL-server-5.6.20-1.sles11.x8

mysql导入数据库中的存储过程和函数出现错误的解决办法

mysql导入数据库中的存储过程和函数出现错误的解决办法 调用一个远程拷贝的本地Mysql的储存过程 报错:[Err] 1449 - The user specified as a definer ('repl'@'192.168.1.%') does not exist  解决想法: 凭借以前经常见到的[email protected]报错,给root赋值所有权限: grant all privileges on *.* to [email protected]"%" identif

Mysql 分组查询出现'this is incompatible with sql_mode=only_full_group_by'的解决办法

由于Mysql自动开启了 only_full_group_by,所以若查询的字段不在group by里面,则分组报错. 解决办法其一:mysql配置,关闭only_full_group_by,这种办法自行百度 下面说第二种办法: 除去group_by 以外的参数加上any_value(*) 如:SELECT type_id,any_value(`name`)  FROM ts_product GROUP BY type_id; Mysql 分组查询出现'this is incompatible

mysql保存中文乱码的原因和解决办法

当你遇到这个mysql保存中文乱码问题的时候,期待找到mysql保存中文乱码的原因和解决办法这样一篇能解决问题的文章是多么激动人心. 也许30%的程序员会选择自己百度,结果发现网友已经贴了很多类似mysql 中文乱码.php mysql 中文乱码.mysql5.5中文乱码.mysql 乱码.mysql乱码问题.mysql jsp 乱码.mysql jdbc 乱码.mysql 查询乱码.mysql 导入数据乱码等一系列问题,到底哪个是自己要找的能解决自己问题的呀?15%的程序员一看就懵了,剩下15

IE6,IE7,IE8下报JS错误:expected identifier, string or number的原因及解决办法

今天在调试一个页面的时候遇到一个问题,在IE9下运行得很好的脚本,在IE8里打开的时候弹出错误:expected identifier, string or number,按照经验,应该是定义对象的时候最后一个属性末尾跟了逗号,但检查一遍后没发现有这种情况,后来仔细看了一下报错的位置,发现有定义json对象属性时,属性名没有用引号括起来,于是加了上去再试,问题解决了. 综上所述,当出现expected identifier, string or number的错误时,你首先应该检查在使用对象字面

mysql导入导出sql文件,source导入速度慢的解决办法

1.导出整个数据库mysqldump -u 用户名 -p 数据库名 > 导出的文件名mysqldump -u dbuser -p dbname > dbname.sql 2.导出一个表mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名mysqldump -u dbuser -p dbname users> dbname_users.sql 3.导出一个数据库结构mysqldump -u dbuser -p -d --add-drop-table dbname &