2012-02-01 15 views
1

mysqlへのクエリを構築して、200行から最後まで行を削除することはできません。条件内の同じテーブルのデータを使用してテーブルから行を条件付きで削除するにはどうすればよいですか?

DELETE FROM `popular` 
WHERE NOT EXISTS(
SELECT * 
FROM `popular` 
ORDER BY `rank` DESC, `timestamp` DESC 
LIMIT 200 
) 

エラーので - #1093 - 更新のためのあなたがターゲット表を指定することはできません「人気」FROM句

+0

を削除する行を識別、最初の行をランク付けする必要があるかもしれません。 – theWalker

+1

申し訳ありませんが、Stack Overflowは英語のリソースです。この質問は、あなた自身または他の誰かによって英語に翻訳される必要があります。 –

+0

これは、SQL実装における多くのMySQLの欠点の1つです。代わりに結合を使用するためにそれを変更する必要があります –

答えて

1

ではわずか2つの呼び出しに分割:第1の選択を実行してのIDを検索削除したい行を選択します。これらのIDをコピーしてdeleteコマンドで使用します。

ID間にカンマを手動で追加したくない場合は、テキストパッドや「Excel」で「検索と置換」を使用して簡単に行うことができます。

1

あなたは、一時的なテーブルの上にそれを格納し、私は、あなたが英語にそれを翻訳しなければならないと考えたよう

select @rownum:[email protected]+1 rownum, popular.* from (select @rownum:=0) r, popular order by rank desc, timestamp desc 
関連する問題