任务
假设空间有空,每晚需要对邮件进行处理,删除最近50条之外的数据
解决过程
1 坑1,发现mysql 旧版本不支持in...好了,换个思路
delete from team_mail where id in (select id from team_mail where team_id = 15 order by id desc limit 50 )
2 坑2,错误提示,发现不能delete和select同一个表,这个问题只会出现在mysql...嵌套一层select就能解决
delete from team_mail where team_id = 15 and id < (select min(id) from team_mail where team_id = 15 order by id desc limit 50 )
3 坑3,执行成功,但是结果不如意,建议发现min_id 一直是最小的那个,怀疑是min是在limit 之前执行的...好吧,嵌套一下
delete from team_mail where team_id = 15 and id < (select min(id) from (select id from team_mail where team_id = 15 order by id desc limit 50 ) a)
至此问题解决
顺提,上面别名a 不能删除,因Every derived table must have its own alias(每一个派生出来的表都必须有一个自己的别名)