2011-08-11 29 views
2

mysqlを使用して、テーブルからすべての行を削除しますが、たとえば200レコードを保持しますか?テーブルから行を削除しますが、指定した番号を保持

明らかなアプローチは、それらを数え、いくつかの演算を行い、正しい数を削除することです。しかし、mysqlには1つの削除クエリでそれを行う組み込み関数がいくつかありますか?

+0

x個のレコードを削除することをお勧めしますか、それとも他の場所にあるレコードを削除するだけですか? – Josh

+0

@Josh xレコード以外のすべてを削除します。彼らは後でテーブルにとどまります。 –

+0

削除しないレコードは200個ですか?あなたは日時の列を持っていて、200の最新のレコードまたは何かを保持したいですか? –

答えて

3

あなたは条件を使用して削除することができます:あなたは正確 200行を持っていないように

delete from YourTable 
where YourSequentialID > 200 

あなたのシーケンシャルは、ギャップを持つことができますが。だからあなたができることはあなたの状態に取り組んでいます。

私が知っている
delete from YourTable 
where id not in 
(
select ID 
from YourTable 
LIMIT 200 
) 

、それが遅くなることができます。

あなたが維持するレコードを探す(200最初に言う)と、他のすべてを削除します。しかし、これはプロダクションクエリではなく、単にクリーンアップクエリです。あなたはそれを一度だけ実行する必要はありません。

関連する問題