私はテーブルを持っておりcarts
、cartitems
2番目のテーブルには最初のテーブルへの外部キーがあります。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
。
また、carts
テーブルには最大1,000万行あるので、このクエリを改善する方法についての提案に感謝します:-)