2014-12-06 125 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