+ -
当前位置:首页 → 问答吧 → 求一条sql语句

求一条sql语句

时间:2011-07-13

来源:互联网

各位,需求是这样的。
表 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,不过数据库到是无所谓,大家还是给一下思路吧。

作者: nanapoleon   发布时间: 2011-07-13

上传你的DB到www.access911.net/csdn
,用WINRAR压缩
假设AID唯一,可以用查询来解决
要重新生成1个序列号

作者: WWWWA   发布时间: 2011-07-13

引用 1 楼 wwwwa 的回复:

上传你的DB到www.access911.net/csdn
,用WINRAR压缩
假设AID唯一,可以用查询来解决
要重新生成1个序列号

实际情况可能会不一样,所以上面所说的是问题的简化,如果有什么疑问,我尽量解释清楚。。

说明下: aid不会重复。因为aid为1到28的数据cid都是2,所以由于每个cid对应的数据只能保存20个,那么,要删除掉21到28,同理,要删掉表中cid为3,aid为51到58的数据。

作者: nanapoleon   发布时间: 2011-07-13

直接上传数据库 ,节省时间,基本思路就是:根据AID、CID重新生成1个序列号

作者: WWWWA   发布时间: 2011-07-13

建立临时表以aid降序排列,以cid分组,limit 20;然后通过关联原表和临时表的aid来删除

作者: chendong_j   发布时间: 2011-07-13