2014-12-06 126 views
0

即时尝试执行此查询,但我得到错误#1064。MySQL - 删除从子查询

delete from tableABC WHERE ID in (select ID from `TABLEXYZ` where `qty` = 0); 

但以下语句的工作

SELECT * FROM tableABC WHERE在ID(从TABLEXYZ选择ID其中 qty = 0);

+0

然后怎么样'从tableABC删除其中ID(选择来自TABLEXYZ的ID,其中qty = 0);' – 2014-12-06 06:34:28

+0

我的查询有什么区别?它只是缺少反拨 – nuttynibbles 2014-12-06 07:37:34

回答

2

下面是答案:

使用删除查询与子查询具有where条件,请执行以下操作:

DELETE a FROM `tableABC` AS a JOIN (SELECT ID FROM `tableXYZ` WHERE `qty`=0) as b on b.ID = a.ID 
+0

这是对的 - 关键部分是通过命名子查询'b'来强制它保存到一个临时表(由sql引擎无形地处理)。要使用子查询执行删除,必须暂时保留子查询。 – RobP 2014-12-06 08:00:02