2016-08-05 4 views
0

私は問題を説明し、解決策を実装しようとしました。私はたくさんのデータを持つテーブルを持っていて、それぞれ5行4行を削除したい。目的はより軽いテーブルを用意することです。Mysqlは、N行ごとに複数の行を削除します

これが私の要求です:SELECT操作が正常に動作しますが、一緒にDELETE操作で、私はこのメッセージ

#1093 - Table 'myTable' is specified twice, both as a target for 'DELETE' and as a separate source for data 

を取得

SET @var_name = -1; 
DELETE FROM myTable 
    WHERE id IN 
    (
    SELECT id FROM myTable HAVING (@var_name := @var_name +1) % 5 !=0 
    ) 

私が意味を理解する:私は削除することはできません。テーブルをリクエストとして使用します。回避策が可能です:コンソールで全リストを取得し、DELETE操作を実行してください。 1行で実行する方が良いです。

ありがとうございました。 ありがとうございます

+0

なぜあなたは 'IN'を使用している "4行それぞれ5行を削除" – e4c5

+0

を説明し、あなたが直接私が持つIDを使用して成功しなかった' –

+0

... 'HAVING IDを書き込むことができます。最後にGlufuの解は良いものでした。おかげで – LyonL

答えて

1

これを試してみませんか?

SET @var_name = -1; 
DELETE FROM myTable WHERE (@var_name := @var_name +1) % 5 = 0 
+0

ありがとう、私はあまりにも複雑な検索! – LyonL

関連する問題