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 に答える