我有一个表,看起来有点像这样: -优化的SQL查询来删除行
A B C D
1 2 0 2012-10-05 18:37:00
1 3 0 2012-10-05 20:37:00
1 4 1 2012-04-07 18:37:00
2 1 1 2012-10-05 18:12:40
2 2 0 2012-10-04 18:37:00
2 3 0 2011-10-05 12:37:00
可乐COLB唯一标识一行。但是,它不是主要关键。 ColC可以是0或1. ColD是日期时间字段。 我需要只保留10行(或更少)从这个表中有colC为0和10行(或更少)colC为1,最大总数没有。的行数为20.这10行(每个)是最近的行,即最近的10行(基于colD值),其中0为colC值。类似地,ColC值保持为1的(最多)10行应该是具有1个ColC值的前10行。
目前,我正在发射4个查询以实现此目的。我将每个colC值的查询分别作为0和1来获取第11行(或更少)的时间戳。然后对于获得的每个值,我激发另一个查询来删除所有“较旧”的行。
我可以启动一个单一的查询来实现吗?如果不是,那么最佳解决方案是什么?
PS: - 我在我的应用程序中使用活动记录,将不得不相应地修改查询。
你有什么话就可以做什么?你有没有工作的查询? –
我试图使用groupby命令以某种方式获取一个查询中的时间戳值,然后删除另一个查询中的行。 –
请显示该代码,以便我们能够提供更多帮助。 –