我是SQL的初学者,想编写一个脚本来删除MySQL数据库的2个表中的行。
我有活动和与会者,并希望从超过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)
答案 0 :(得分:1)
删除查询不应使用*
DELETE FROM attendees WHERE event_id = IN (SELECT id FROM events WHERE enddate <= DATE_ADD(CURDATE(), INTERVAL -90 DAY))
DELETE FROM events WHERE enddate <= DATE_ADD(CURDATE(), INTERVAL -90 DAY)
(编辑:添加了ANY
来处理子查询中的多行)
答案 1 :(得分:0)