私はこのように見えるテーブルを持っています:-
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 は日時フィールドです。このテーブルから、colC が 0 の 10 行 (またはそれ以下) と、colC が 1 の 10 行 (またはそれ以下) だけを保持する必要があります。これらの 10 行 (それぞれ) は最新の行です。つまり、colC 値として 0 を持つ最新の 10 行 (colD 値に基づく) です。同様に、保持される ColC 値が 1 の (最大) 10 行は、ColC 値が 1 の最初の 10 行である必要があります。
現在、これを達成するために 4 つのクエリを実行しています。colC 値を 0 と 1 としてそれぞれ 1 つのクエリを実行して、11 行目 (またはそれ以下) のタイムスタンプを取得します。次に、取得した値ごとに別のクエリを起動して、すべての「古い」行を削除します。
これを達成するために単一のクエリを起動できますか? そうでない場合、これに対する最適な解決策は何ですか?
PS:- アプリケーションでアクティブ レコードを使用しており、それに応じてクエリを変更する必要があります。