我是SQL的初學者,並且想編寫一個腳本從MySQL數據庫的兩個表中刪除行。SQL通過選擇外鍵刪除行
我有活動和與會者,並希望從90天以前的活動中刪除所有與會者和活動數據。 因此,我需要找到舊事件的event_ids數組,然後刪除所有參與該數組中任何event_id的與會者。
解決這個問題的最好方法是什麼?這裏是我的想法:
DELETE * FROM attendees WHERE event_id = ANY (SELECT id FROM events WHERE enddate <= DATE_ADD(CURDATE(), INTERVAL -90 DAY))
DELETE * FROM events WHERE enddate <= DATE_ADD(CURDATE(), INTERVAL -90 DAY)
表是用外鍵約束連接的嗎? –
與會者擁有引用事件表主鍵的外鍵event_id。 – Buzzwave
你的想法會起作用,[這裏](http://stackoverflow.com/questions/3331992/how-to-delete-from-multiple-tables-in-mysql)是一個更好的解決方案。你也可以添加一個ON DELETE CASCADE外鍵。 – Vatev