各位,需求是这样的。
表 ta 列 _id aid cid
现在想删除: 如果cid一样,那么删除这些数据中aid第20大以外的数据。
也就是说每个cid对应最多只会有20条数据。比如:aid有1,2,3,4,****,28 cid都为2。 aid:30,31,32,*****,58 cid都为3.
那么删除aid是21到28的数据,并且删除aid是51到58的数据。这个sql语句应该怎么写呢?我用的是sqlite,不过数据库到是无所谓,大家还是给一下思路吧。
表 ta 列 _id aid cid
现在想删除: 如果cid一样,那么删除这些数据中aid第20大以外的数据。
也就是说每个cid对应最多只会有20条数据。比如:aid有1,2,3,4,****,28 cid都为2。 aid:30,31,32,*****,58 cid都为3.
那么删除aid是21到28的数据,并且删除aid是51到58的数据。这个sql语句应该怎么写呢?我用的是sqlite,不过数据库到是无所谓,大家还是给一下思路吧。
,用WINRAR压缩
假设AID唯一,可以用查询来解决
要重新生成1个序列号
select max(aid) as max_id from TA where cid in (select distinct cid from TA) order by aid desc limit 20,但这样就不知道怎么group by了,怎么能查出每个cid中最大的aid,而不是所有组中最大的aid。
from tb A
where (select count(*) from tb A.cid=cid and A.aid>aid) > 20
楼上说的是不是这个意思
select max(aid) from TA order by aid desc limit 20
select max(aid) from TA where TA.cid=cid order by aid desc limit 20
for(int c : cids){
delete from TA where aid>(select max(aid) from TA where cid=c order by aid desc limit 20) and cid=c
}怎么能写的真正的sql语句呢??
已经上传,具体要操作的是article表,这里的cid对应里面的categoryId,aid是他(article)本身的_id
请问还需要其他信息么?
where a.category_id=category_id and a._id>_id )>20以外的记录,删除应该会吧