开发者社区> 技术小阿哥> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

MySQL4中嵌套子查询删除出错解决方案

简介:
+关注继续查看
MySQL4中嵌套子查询做删除操作会出错,例如下面的SQL:
delete from moviesparam 
where mpeg in (select mp.mpeg 
                                        from movies mv, moviesparam mp 
                                     where mv.mpeg = mp.mpeg) 
 
执行提示:
 
错误码: 1093 
You can't specify target table 'moviesparam' for update in FROM clause
 
原因:所删除表的在子查询中出现,就会出错,当然,此SQL放到MySQL5中执行是没有问题的。
 
为了解决此问题,可以建立一张临时表,将子查询的数据写入到临时表,然后做子查询删除即可。
当然,此处的临时表并被真是真正意义的临时表,是临时创建一个表,用完后再删除。代码如下:
drop table if exists tmp_del_mp; 

create table tmp_del_mp as 
select mpeg from moviesparam where mpeg not in (select mpeg from movies); 

delete from moviesparam where mpeg in (select mpeg from tmp_del_mp); 

drop table if exists tmp_del_mp;
 
这样就变相的实现了所要实现的功能。
 
将上面的SQL放置到JDBC代码中执行:
Statement stmt = conn.createStatement();    
stmt.addBatch("drop table if exists tmp_del_mp");    
stmt.addBatch("create table tmp_del_mp as\n" +    
    "select mpeg from moviesparam where mpeg not in (select mpeg from movies)");    
stmt.addBatch("delete from moviesparam where mpeg in (select mpeg from tmp_del_mp)");    
stmt.addBatch("drop table if exists tmp_del_mp");    
stmt.executeBatch();


本文转自 leizhimin 51CTO博客,原文链接:http://blog.51cto.com/lavasoft/202000,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云服务器4核8g10M带宽配置大概能支持多少并发访问?
本文通过介绍阿里云10M带宽支持多少并发数、阿里云服务器4核8G配置价格、云服务器实例规格等,让新手用户了解4核8g10M带宽配置大概能支持多少并发访问!
467 0
《并行计算的编程模型》一3.4.1 初始化和查询
本节书摘来华章计算机《并行计算的编程模型》一书中的第3章 ,第3.4.1节, [(美)帕万·巴拉吉(Pavan Balaji)编著;张云泉等译,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
953 0
java8 Optional正确使用姿势
Java 8 如何正确使用 Optional import lombok.Data; import lombok.EqualsAndHashCode; import lombok.ToString; import org.
1045 0
封装js千分位加逗号和删除逗号
原文:封装js千分位加逗号和删除逗号 //封装js千分位加逗号和删除逗号 alert( format(2545678754.020001) ) //2,545,678,754.
1055 0
三大框架中模糊查询代码
js获取查询条件,并去后台查询 function queryByName(){                    //获取查询条件的用户名                    var queryName=$("#queryName").
712 0
13688
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载