mysql:7422
From: yuji koga <yuji koga <koga-y@xxxxxxxxxx>>
Date: Tue, 08 Apr 2003 09:54:36 +0900
Subject: [mysql 07422] Re: 最新のレコードを○○件残して古いものを削除
お世話になります。古賀です。 東様、かわじ様、レス有り難うございました。 > 元記事には,このデータが随時更新されるデータであるかどうか > 明記されていませんので,タイムスタンプ優先で考えていたのです > が,実際のところどうでしょう? > > yuji koga <koga-y@xxxxxxxxxx>さま そうですね。ケースバイケースで考えております。 例えば、レコード内に随時自動更新されるタイムスタンプと、 最初に登録した日時を記録するdatetime型フィールドの二つを置いておけば、 それらのどちらかで新旧判別をするかで、 ケース1:更新の有無にかかわらず、初回登録日時の古い物を削除 ケース2:初回登録日時にかかわらず、更新日時の古い物を削除 のどちらにも対応できるかな、と考えております。 差し当たって、今必要なのは「ケース1」の処理です。 > 以下のようなsql文でいいのかなぁと思いますが,どうでしょう。 > (総レコード件数が10,000件を超えない場合に10件だけ残すことを > 想定しています。) > > delete from db_name order by timestamp desc limit 10,10000; 同じような文を考えていましたが、初心者の自分にはマニュアルなどの 「order by 〜 limit 〜」文法がselect文の説明としてあげられており、 これが delete文でも使えるのかどうかよく分かりませんでした。 > delete 文に order by を使うことが出来るのは、MySQL 4.0 以降のようです。 > (それと、limit に offset は指定できないような気も) とのことで、それはバージョンにより異なると知り、参考になりました。 自分の環境は3.23.53ですので、残念なところです。 今後はMySQL 4.0 以降への乗り換えも考えていきたいと思います。 > 元の話ですが、何か 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); 現時点でのケースでは、このやり方が良さそうに思われます。 是非、試させて頂きます。 タイムスタンプを優先させるなら、最初のselect文で select timestamp 〜 としておいて、delete文で delete from db_name where timestamp < (上記のtimestamp); と応用することが出来そうです。 皆様、有り難うございました。 <? /* 株式会社メディアプレス 制作課 古賀裕二 会社:koga-y@xxxxxxxxxx 自宅:yuuukunn@xxxxxxxxxx */ ?>
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]