2011-02-25 13 views
1

SQLレコードの最大数を10に設定し、新しいレコードが追加された場合は最後のレコードを自動的に削除する方法。MySqlの固定行数

+0

をしたいとき、私は、これは重要ではないかもしれないけど、なぜあなたがそうしたいあなたが実行して、単一のクエリに挿入された最後の10を除くすべてのレコードを削除することができますか?最後の10個のエントリ、または最高のIDまたは何かを持つ10個のエントリを取るほうが簡単ではないでしょうか。 ( 'select * from sometable order from id desc limit 1') – Ragnar123

答えて

2

あなたは

delete from table where id < (select * from (select id from table order by id desc limit 9,1) as tab) 
4

MySQLにはこのような機能はありません。トリガーやストアド・プロシージャを作成して、アプリケーション内またはデータベース内で自分でプログラムを作成する必要があります。

現在の行数(SELECT COUNT(*) FROM table)が10より大きい場合は、それを削除するためにDELETE FROM table ORDER BY somecol LIMIT 1を数えます。

0

すべてのレコードを保持して、最新の10個のレコードのみを返すことができます。古いものを定期的に削除するクリーンアップ手順を作成します。

SELECT * FROM tbl ORDER BY created_at DESC LIMIT 10

1

挿入日付と時刻と日付/時刻フィールドを追加します。次に、挿入時にトリガーを実行して上位1行を削除し、日付降順でソートします。

+0

のように考えるのですが、C言語では不可能です。Javaで日付と時刻のコードを追加すると複雑になります。 – lock

関連する問題