[前][次][番号順一覧][スレッド一覧]

mysql:7418

From: Shinya Kawaji <Shinya Kawaji <kawaji@xxxxxxxxxx>>
Date: Mon, 07 Apr 2003 20:57:24 +0900
Subject: [mysql 07418] Re: 最新のレコードを○○件残して古いものを削除

かわじ、です。


> > 最新のレコードを○○件残して古いものを削除するSQL文を発行したいので
> > すが、どのように書いたらよいのか悩んでおります。
> 
>  以下のようなsql文でいいのかなぁと思いますが,どうでしょう。
> (総レコード件数が10,000件を超えない場合に10件だけ残すことを
> 想定しています。)
> 
>  delete from db_name order by timestamp desc limit 10,10000;

delete 文に order by を使うことが出来るのは、MySQL 4.0 以降のようです。
(それと、limit に offset は指定できないような気も)
http://www.mysql.com/doc/en/DELETE.html


元の話ですが、何か auto_increment なフィールドを仮に id とし、
また、残す件数を 10000 件 として

新しいものから10000件前の id を調べて
select id from db_name order by id desc limit 10000,1;

上記で id が 得られた場合のみ(10000件以上あった場合のみ)、
それ以前のものを消す
delete from db_name where id < (上記のid);

という感じでいかがでしょう?



[前][次][番号順一覧][スレッド一覧]

      7412 2003-04-07 18:35 [Satoshi Iwanaga <iwa] インストール・別サーバへ接続            
      7413 2003-04-07 19:08 ┗[doumae <doumae@xxxxx]                                       
      7414 2003-04-07 19:51  ┣[yuji koga <koga-y@xx] 最新のレコードを○○件残して古いものを削除
      7415 2003-04-07 20:12  ┃┣[Daiju Azuma <daiju_a]                                   
->    7418 2003-04-07 20:57  ┃┃┗[Shinya Kawaji <kawaj]                                 
      7420 2003-04-07 21:24  ┃┃ ┗[Daiju Azuma <daiju_a]                               
      7422 2003-04-08 09:54  ┃┗[yuji koga <koga-y@xx]                                   
      7416 2003-04-07 20:16  ┣[Satoshi Iwanaga <iwa]                                     
      7423 2003-04-08 15:12  ┃┗[Satoshi Iwanaga <iwa]                                   
      7424 2003-04-08 15:47  ┃ ┗[doumae <doumae@xxxxx]                                 
      7425 2003-04-08 16:12  ┃  ┗[Satoshi Iwanaga <iwa]                               
      7426 2003-04-08 16:48  ┃   ┣["TOYOSHIMA,Masayuki"]                             
      7432 2003-04-09 14:26  ┃   ┗[Satoshi Iwanaga <iwa]                             
      7417 2003-04-07 20:21  ┗[doumae <doumae@xxxxx]