我有一张桌子carts
,cartitems
第二张桌子有一个外键。现在我想删除所有carts
超过 3 个月且没有相关的行cartitems
。以下查询给了我正确的结果:
SELECT *
FROM `carts` c
LEFT OUTER JOIN `cartitems` i ON ( `c`.`id` = `i`.`cart_id` )
WHERE `c`.`last_updated` < DATE_SUB(NOW() , INTERVAL 3 MONTH)
GROUP BY `c`.`id`
HAVING COUNT( `i`.`id` ) = 0;
但我不知道如何将此查询转换为DELETE
.
此外,由于表中有大约 1000 万行carts
,我会感谢有关如何改进此查询的建议 :-)