mysql:求一个删除旧数据的sql
表T的字段F有重复项,要求每项保留最新的100条记录,不足100全部保留,删除超过100的其他数据...
表T的字段F有重复项,要求每项保留最新的100条记录,不足100全部保留,删除超过100的其他数据
展开
展开全部
有唯一标识字段吗?比如自增id字段?
假设你的表表名是tablename, 有字段guid,F,T。其中guid为唯一标识字段,F为有重复项的字段,T为时间,那么下面的sql可以做。
delete from tablename where guid not in (
select guid from (
select
tablename_tmp.*,
@rownum:=@rownum+1 ,
if(@pF=tablename_tmp.F,@rank:=@rank+1,@rank:=1) as rank,
@pF:=tablename_tmp.F
from (
select * from tablename order by F,T desc
)
tablename_tmp ,
(select @rownum :=0 , @pF := null ,@rank:=0) a
)
result where rank <=100
)
;
展开全部
select * from table_name order by datetime limit 0,100;
然后可以delete不在这个结果集里的数据。
然后可以delete不在这个结果集里的数据。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
先select distinct F,然后用游标循环删除后100项
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
先按时间排序, 找出最新的100条,可以用limit 限制
再按条件删除,采用多重查询方式
再按条件删除,采用多重查询方式
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你有个时间字段吧,否则怎么知道哪些是旧数据哪些是新数据。
追问
确实,假定时间字段T
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询