そして、最小値と最大値から10000引いた数を
上記クエリに差し替えて実行しています。
この SQL はこんなふうに書けます。
delete from wp_posts where id < (select max(ID)-10000 from wp_posts)
比較演算子を使えば最小値は必要ないです。
試すときはきちんと元に戻せるようにしてやってください。
SQL を cron で動かすやり方は分かってますよね。
sqlplus で先程の SQL を実行してください。
次のようなシェルスクリプトを書けば出来ます。
#!/bin/sh echo "delete FROM wp_posts WHERE id between 4798774 and 5100866;" | mysql --user=ユーザー名 --password=パスワード
▽3
●
うぃんど ●1000ポイント ベストアンサー |
(案1)MySQLをバッチモードで操作する
最新1万件だけ残して削除するSQLスクリプトファイル
SELECT @a:= (SELECT MAX(id) - 10000 FROM `wp_posts`); DELETE FROM `wp_posts` WHERE id between 4798774 and @a;
cronに登録するコマンド
mysql -h ホスト名 -u ユーザー名 -p パスワード データベース名 < SQLスクリプトファイル
MySQLをバッチモードで動かせるかどうかはサーバー管理者に相談してください。
ダメなら次の案
(案2)phpからMySQLに投げるようにします。
phpでMySQLにSQLスクリプトを投げるプログラムを書き、cronからphpを実行する
phpをコマンドラインから実行できるかは、サーバー管理者に相談してください。
ダメなら次の案
(案3)perlなど・・・以下同様
perlを使えない環境はあまりないと思いますので、上記2つの案がダメなら・・・
いずれの場合もテスト用のテーブルを作成し、
動作実験してから実施するようにしてくださいね。