web-dev-qa-db-de.com

Löschen Sie viele Zeilen aus einer Tabelle mit der ID in Mysql

Ich bin ein Linux-Administrator mit nur Grundkenntnissen in MySQL-Abfragen 

Ich möchte viele Tabelleneinträge, die eine IP-Adresse sind, mit id aus meiner Tabelle löschen.

derzeit verwende ich 

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

aber ich muss 254 Einträge löschen, also dauert diese Methode Stunden. Wie kann ich mysql sagen, dass ich Zeilen löschen soll, die ich angegeben habe?.

Das Löschen der gesamten Tabelle und das Importieren erforderlicher Einträge ist keine Option.

51
Kevin Parker

Am besten verwenden Sie die IN-Anweisung:

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

Sie können auch BETWEEN verwenden, wenn Sie fortlaufende IDs haben:

DELETE from tablename WHERE id BETWEEN 1 AND 254;

Für einige IDs können Sie natürlich auch andere WHERE-Klauseln verwenden:

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

wie wäre es mit IN

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

wenn Sie nur ein paar Reihen halten müssen, sollten Sie Folgendes berücksichtigen

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

Dadurch werden nur einige Aufzeichnungen aufbewahrt und andere verworfen.

5
Ghigo

So etwas könnte es etwas einfacher machen, Sie könnten natürlich ein Skript verwenden, um dies zu generieren, oder sogar Excel 

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

Andere haben IN vorgeschlagen, das ist in Ordnung. Sie können auch einen Bereich verwenden:

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

Wenn die zu löschenden IDs zusammenhängend sind.

3

Wenn Sie eine "Bedingung" in Ihren Daten haben, um die 254 IDs herauszufinden, könnten Sie Folgendes verwenden:

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

oder einfach:

delete from tablename where <your-condition>

Die 254 Werte der id-Spalte einfach hart zu kodieren, wäre auf jeden Fall sehr schwierig.

3
Vivek Todi

Verwenden Sie IN-Klausel 

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

ODER Sie können die Verwendung von BETWEEN und NOT IN zusammenführen, um die zu erwähnenden Zahlen zu verringern.

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

Versuche dies.

1
sameer kumar

Ich hoffe es hilft: 

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