MySQL4中嵌套子查询删除出错解决方案计算机等级考试

文章作者 100test 发表时间 2009:10:16 21:31:03
来源 100Test.Com百考试题网


  MySQL4中嵌套子查询做删除操作会出错,例如下面的SQL:
  0delete from moviesparam
  where mpeg in (0select mp.mpeg
  from movies mv, moviesparam mp
  where mv.mpeg = mp.mpeg)
  执行提示:
  错误码: 1093
  You cant specify target table moviesparam for 0update in FROM clause
  原因:所删除表的在子查询中出现,就会出错,当然,此SQL放到MySQL5中执行是没有问题的。
  为了解决此问题,可以建立一张临时表,将子查询的数据写入到临时表,然后做子查询删除即可。百考试题论坛
  当然,此处的临时表并被真是真正意义的临时表,是临时创建一个表,用完后再删除。代码如下:
  0drop table if exists tmp_del_mp.
  create table tmp_del_mp as
  0select mpeg from moviesparam where mpeg not in (0select mpeg from movies).
  0delete from moviesparam where mpeg in (0select mpeg from tmp_del_mp).
  0drop table if exists tmp_del_mp.
  这样就变相的实现了所要实现的功能。
  将上面的SQL放置到JDBC代码中执行:
  Statement stmt = conn.createStatement().
  stmt.addBatch("0drop table if exists tmp_del_mp").
  stmt.addBatch("create table tmp_del_mp as\n" 
  "0select mpeg from moviesparam where mpeg not in (0select mpeg from movies)").
  stmt.addBatch("0delete from moviesparam where mpeg in (0select mpeg from tmp_del_mp)").
  stmt.addBatch("0drop table if exists tmp_del_mp").
  stmt.executeBatch().

  编辑特别推荐:

  ·计算机三级的四个类别看看你适合哪个

  ·全国计算机等考三级数据库模拟试题及参考答案



相关文章


计算机三级辅导:硬盘故障回天有术计算机等级考试
无线网络最大漏洞未安装所有安全选项计算机等级考试
技术谈:运维管理 寻找真正“主动”之路计算机等级考试
内存插槽损坏引发启动故障计算机等级考试
MySQL4中嵌套子查询删除出错解决方案计算机等级考试
一波三折看我解决电脑无法启动的故障计算机等级考试
mysql的replace函数替换字符串计算机等级考试
初级玩家必选:微软BASIC套装应用感受计算机等级考试
自已动手修理键盘计算机等级考试
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛