2011-06-30 15 views
0

historyというテーブルがあります。 には3つのカラムがあります。 idvaluetimestampN個以上のエントリを持つレコードを削除する

Idは、主キーではなく、ペア(id, timestamp)はユニークです。 私がしたいのは、特定の制限を超える特定のIDのすべての古いレコードを削除することです。例えば 私は、これらの値がある場合:

-1,value1,1 
-1,value2,2 
-1,value3,3 
-2,value4,4 
-2,value5,5 
-2,value6,6 

を、リミットは、私のようなものを取得する必要のステートメントを実行した後2です:

-1,value2,2 
-1,value3,3 
-2,value4,4 
-2,value5,5 
-2,value6,6 

答えて

1

私はそれ(試したし、私が持っていたテストケースのために働く)していると考え、答えは:

DELETE FROM history WHERE id = ?1 AND timestamp NOT in (SELECT sourcetime FROM history WHERE id =?1 ORDER BY timestamp DESC LIMIT ?2); 
-1
DELETE FROM ... WHERE timestamp < ... 

が動作しませんの?

+0

いいえ、タイムスタンプが差別要因ではありません。私は指定されたIDの最新のNレコードを残す必要があります。私は年齢よりも排除していない、私は特定のIDをこのIDの望ましい限界を超える最も古いメンバーを排除しています。 – vladimiryov

関連する問題