2012-10-06 36 views
3

下面的查詢得到的我要刪除的記錄列表...如何用JOIN和ID刪除?

SELECT * 
FROM `orderitems` as oi 
LEFT JOIN `orders` as o 
    ON (o.`orderid` = oi.`orderid`) 
WHERE o.`date` = '2012-10-05' 
    AND o.`status` = 'init'; 

不幸的是,表格設計沒有id場。
我看過其他刪除與連接,但都使用id字段。
這不起作用:

DELETE 
FROM `orderitems` as oi 
LEFT JOIN `orders` as o 
    ON (o.`orderid` = oi.`orderid`) 
WHERE o.`date` = '2012-10-05' 
    AND o.`status` = 'init'; 

一個人怎麼DELETE上面鑲有一個MySQL查詢? (無PHP)

回答

4

試試這個,

DELETE oi -- add the alias here 
FROM `orderitems` as oi 
LEFT JOIN `orders` as o 
    ON (o.`orderid` = oi.`orderid`) 
WHERE o.`date` = '2012-10-05' 
    AND o.`status` = 'init'; 

,或者使用子查詢

DELETE FROM `orderitems` 
WHERE `orderid` IN 
(
    SELECT o.`orderid` 
    FROM `orders` as o 
    WHERE o.`date` = '2012-10-05' AND o.`status` = 'init' 
) 
+0

真棒!每天學習東西:) – neokio

+0

它的工作? :D –

+0

是的,第一次......我覺得沒有想到子查詢是愚蠢的,它可能更簡化,因爲子查詢根本不需要'orderitems' ... – neokio