URL: https://www.overclockers.at/coding-stuff/mysql-doppelte-eintraege-loswerden_245751/page_1 - zur Vollversion wechseln!
Hallo!
Hab eine Tabelle, die aus einer importierten Textdatei ohne Indizes importiert wird. Leider gibt es da doppelte Einträge die ich jetzt loswerden möchte.
Diverse Suchen haben mich schon einen kleinen Schritt näher ans Ziel gebracht, ich hab jetzt eine Abfrage, die mir zumindest mal anzeigt, wie oft ein Eintrag vorhanden ist.
Dieses Abfrage-Ergebnis bräuchte ich jetzt in eine Tabelle geschrieben, dann nur noch die Spalte Anzahl löschen, Tabelle umbenennen, fertig.
Meine bestehende Abfrage ist:
Code: SQLSELECT COUNT( * ) AS anzahl, datum, name_id, art_id, abwesend_id FROM `schicht_plan` GROUP BY datum, name_id, art_id, abwesend_id;
Code: SQLINSERT INTO neueTabelle ( anzahl, datum, name_id, art_id, abwesend_id ) SELECT COUNT( * ) AS anzahl, datum, name_id, art_id, abwesend_id FROM `schicht_plan` GROUP BY datum, name_id, art_id, abwesend_id;
Vielen Dank, viel einfacher als ich dachte.
INSERT INTO neueTabelle hatte ich schon, nur dann hab ich ne Klammer gesetzt und das SELECT Statement reingeschrieben.
Mein weiterer Weg:
Code: SQLDROP TABLE schicht_plan; ALTER TABLE `schicht_plan_temp` DROP `anzahl` ; RENAME TABLE schicht_plan_temp TO schicht_plan;
Wenn du alle Felder zusammen als Primary Key (oder alternativ als Unique Key) definierst, wird dir der Import keine doppelten werte anlegen können. Ist im Endeffekt die sauberere Methode da das Schema nicht über eine Applikation geänderrt werden sollte. Allerdings müsste der Import Fehler übergehen können. Normalerweise gibt man dem Applikationsbenutzer nur rechte für INSERT, UPDATE, SELECT und DELETE.
overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025