82

私は Linux 管理者であり、Mysql クエリの基本的な知識しかありません

idを使用してテーブルから IP アドレスである多くのテーブル エントリを削除したいのですが、

現在私は使用しています

DELETE from tablename where id=1;
DELETE from tablename where id=2;

しかし、254 エントリを削除する必要があるため、この方法には数時間かかります。指定した行を削除するように mysql に指示するにはどうすればよいでしょうか。

テーブル全体を削除し、必要なエントリをインポートすることはできません。

4

10 に答える 10

206

最良の方法は、INステートメントを使用することです。

DELETE from tablename WHERE id IN (1,2,3,...,254);

BETWEEN連続したIDがある場合にも使用できます:

DELETE from tablename WHERE id BETWEEN 1 AND 254;

もちろん、他のWHERE句を使用して一部のIDを制限することもできます。

DELETE from tablename WHERE id BETWEEN 1 AND 254 AND id<>10;
于 2013-03-19T15:48:25.217 に答える
8

使ってみてはどうですかIN

DELETE FROM tableName
WHERE ID IN (1,2) -- add as many ID as you want.
于 2013-03-19T15:45:38.910 に答える
6

数行だけを保持する必要がある場合は、次のことを検討してください。

DELETE FROM tablename WHERE id NOT IN (5,124,221);

これにより、一部のレコードのみが保持され、他のレコードは破棄されます。

于 2013-03-19T15:49:11.750 に答える
5

このようなものは少し簡単になるかもしれません。明らかにスクリプトを使用してこれを生成したり、Excel を作成したりすることもできます。

DELETE FROM tablename WHERE id IN (
1,
2,
3,
4,
5,
6
);
于 2013-03-19T15:46:00.450 に答える
4

他の人が提案しINました、これは大丈夫です。次の範囲も使用できます。

DELETE from tablename where id<254 and id>3;

削除するIDが連続している場合。

于 2013-03-19T15:49:20.187 に答える
4

データに 254 個の ID を把握するための「条件」がある場合は、次を使用できます。

delete from tablename
where id in 
(select id from tablename where <your-condition>)

または単に:

delete from tablename where <your-condition>

いずれにせよ、id 列の 254 個の値を単純にハードコーディングするのは非常に困難です。

于 2013-03-19T15:52:47.010 に答える
3

使用IN条項

   DELETE from tablename where id IN (1,2);

BETWEENまたは、との使用をマージしNOT INて、言及する必要のある数を減らすことができます。

DELETE from tablename 
where (id BETWEEN 1 AND 255) 
AND (id NOT IN (254));
于 2013-03-19T15:46:29.683 に答える