web-dev-qa-db-ja.com

Mysqlでidを使用してテーブルから多くの行を削除します

私はMySQLクエリの基本的な知識しか持たないLinux管理者です

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

現在使用しています

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

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

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

61
Kevin Parker

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

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

IDが連続している場合は、BETWEENも使用できます。

DELETE from tablename WHERE id BETWEEN 1 AND 254;

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

DELETE from tablename WHERE id BETWEEN 1 AND 254 AND id<>10;
149
JoDev

INを使用してはどうですか

DELETE FROM tableName
WHERE ID IN (1,2) -- add as many ID as you want.
7
John Woo

数行だけを保持する必要がある場合は、考慮してください

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

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

5
Ghigo

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

DELETE FROM tablename WHERE id IN (
1,
2,
3,
4,
5,
6
);
5
cowls

他の人がINを提案していますが、これは問題ありません。範囲を使用することもできます:

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

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

3

IN句を使用

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

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

DELETE from tablename 
where (id BETWEEN 1 AND 255) 
AND (id NOT IN (254));
3
MuhammadHani

254のIDを把握するためにデータに何らかの「条件」がある場合、以下を使用できます。

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

または単に:

delete from tablename where <your-condition>

Idカラムの254の値を単純にハードコーディングすることは、どの場合でも非常に困難です。

2
Vivek Todi
DELETE FROM table_name WHERE id BETWEEN 1 AND 256;

これを試して。

1
sameer kumar

それが役に立てば幸い:

DELETE FROM tablename 
WHERE tablename.id = ANY (SELECT id FROM tablename WHERE id = id);
0
mangrove108