0

私はこのようなテーブル(TABLE_NAME)を持っています: ここに画像の説明を入力してください

countが5を超えているかどうかを確認し、超えている場合は、タイムスタンプ値が最も低い行を削除します。この例では、最後の行を削除する必要があります。

1つの複雑なdeleteステートメントでそれを実行したいと思います。それを達成する方法はありますか?

4

2 に答える 2

0
DELETE
FROM TABLE_NAME
WHERE TIMESTAMP < (
                   SELECT TIMESTAMP 
                   FROM (
                          SELECT TIMESTAMP 
                          FROM TABLE_NAME
                          ORDER BY TIMESTAMP DESC
                        ) LIMIT 1 OFFSET 4);

このクエリを使用すると、次のようになります。

  • タイムスタンプDESCでレコードを注文する
  • 5番目のレコードTIMESTAMP(許可される値の最小値)を選択します-> min_timestamp
  • TIMESTAMP<min_timestampですべてのレコードを削除します

私はそれをテストしませんでしたが、これはあなたの問題を解決するためのクエリであるはずです。

于 2013-02-27T14:55:55.163 に答える
0

これがあなたの解決策です

delete from TABLE_NAME where timestamp IN (select min(timestamp) from TABLE_NAME where (SELECT count() FROM TABLE_NAME)>5)

tableRecordカウントが5より大きいかどうかを確認してから、最小タイムスタンプレコードを削除します。

于 2013-02-27T15:51:28.430 に答える