我有一张看起来有点像这样的桌子:-
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
ColA 和 ColB 唯一标识一行。但是,它不是主键。ColC 可以是 0 或 1。 ColD 是一个日期时间字段。我只需要从该表中保留 10 行(或更少),其中 colC 为 0 和 10 行(或更少), colC 为 1,以获得最大总数。行数为 20。这 10 行(每行)是最近的行,即最近的 10 行(基于 colD 值)的 colC 值为 0。同样,保留的(最多)10 行 ColC 值为 1,应该是前 10 行 ColC 值为 1。
目前,我正在触发 4 个查询以实现此目的。我针对 colC 值分别为 0 和 1 触发一个查询,以获取第 11 行(或更少)的时间戳。然后对于获得的每个值,我触发另一个查询以删除所有“旧”行。
我可以触发一个查询来实现这一目标吗?如果不是,那么对此的最佳解决方案是什么?
PS:- 我在我的应用程序中使用活动记录,并且必须相应地修改查询。