带有delete语句的MySql子查询错误

时间:2015-01-12 00:47:17

标签: mysql subquery

我正在从这些wikibooks pages学习sql,我正在尝试使用mysql语法回答最后一个问题“从饱和仓库中删除所有框”。以下是我自己提出的主要是使用同一页面的先前答案。

delete from Boxes as b
  where b.Warehouse in ( 
        select w.Code
          from ( select *
                    from Warehouses) as w
              where w.Capacity < ( select count(*)
                  from Boxes bb inner join Warehouses ww
                       on bb.Warehouse = ww.Code
                          group by bb.Contents) ) ;

网站上对此问题的查询正在生成

this solution doesn't work with mysql 5.0.67
 ERROR 1093 (HY000): You can't specify target table 'Boxes' for update in FROM clause

这就是为什么我使用多个子查询来解决这个mysql消息的方法。但是,我的查询中有错误,因此它没有运行。

  

错误代码:1064。您的SQL语法有错误;检查   手册,对应右边的MySQL服务器版本   语法在'as b where b.Warehouse in附近使用(选择w.Code
  来自(第1行

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

我认为您的仓库表从一列返回(因为*使用)。将*替换为您希望从中获取输出的列。

答案 1 :(得分:0)

我假设Boxes和Warehouse是表格,你给Boxes一个别名并在Warehouse表格上使用它,这可能就是为什么它没有用。也许你应该在&#39;删除之后尝试使用查询。