3

以下查询产生我要删除的记录列表...

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

1 回答 1

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'
)
于 2012-10-06T05:53:07.597 回答