私はMySQLクエリの基本的な知識しか持たないLinux管理者です
idを使用して、テーブルからIPアドレスである多くのテーブルエントリを削除したい
現在使用しています
DELETE from tablename where id=1;
DELETE from tablename where id=2;
しかし、私は254のエントリを削除する必要があるので、この方法には時間がかかります、どうすればmysqlに指定した行を削除するように指示できますか?.
テーブル全体を削除し、必要なエントリをインポートすることはオプションではありません。
最良の方法は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;
IN
を使用してはどうですか
DELETE FROM tableName
WHERE ID IN (1,2) -- add as many ID as you want.
数行だけを保持する必要がある場合は、考慮してください
DELETE FROM tablename WHERE id NOT IN (5,124,221);
これにより、一部のレコードのみが保持され、他のレコードは破棄されます。
このようなものはそれを少し簡単にするかもしれません、あなたは明らかにこれを生成するためにスクリプトを使用することができます、あるいはExcel
DELETE FROM tablename WHERE id IN (
1,
2,
3,
4,
5,
6
);
他の人がIN
を提案していますが、これは問題ありません。範囲を使用することもできます:
DELETE from tablename where id<254 and id>3;
削除するIDが連続している場合。
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));
254のIDを把握するためにデータに何らかの「条件」がある場合、以下を使用できます。
delete from tablename
where id in
(select id from tablename where <your-condition>)
または単に:
delete from tablename where <your-condition>
Idカラムの254の値を単純にハードコーディングすることは、どの場合でも非常に困難です。
DELETE FROM table_name WHERE id BETWEEN 1 AND 256;
これを試して。
それが役に立てば幸い:
DELETE FROM tablename
WHERE tablename.id = ANY (SELECT id FROM tablename WHERE id = id);