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.
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;
wie wäre es mit IN
DELETE FROM tableName
WHERE ID IN (1,2) -- add as many ID as you want.
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.
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
);
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.
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.
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));
DELETE FROM table_name WHERE id BETWEEN 1 AND 256;
Versuche dies.
Ich hoffe es hilft:
DELETE FROM tablename
WHERE tablename.id = ANY (SELECT id FROM tablename WHERE id = id);