MySQL doppelte Einträge loswerden

Seite 1 von 1 - Forum: Coding Stuff auf overclockers.at

URL: https://www.overclockers.at/coding-stuff/mysql-doppelte-eintraege-loswerden_245751/page_1 - zur Vollversion wechseln!


jb schrieb am 16.03.2016 um 08:58

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: SQL
SELECT COUNT( * ) AS anzahl, datum, name_id, art_id, abwesend_id
FROM `schicht_plan`
GROUP BY datum, name_id, art_id, abwesend_id;

Habs aber nicht geschafft, die korrekte Syntax zum Import in eine andere (temporäre) Tabelle zu finden. Die andere Tabelle hat als erstes Feld noch die Anzahl drinnen.


Crash Override schrieb am 16.03.2016 um 09:23

Code: SQL
INSERT 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;


jb schrieb am 16.03.2016 um 13:17

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. :rolleyes:

Mein weiterer Weg:

Code: SQL
DROP TABLE schicht_plan;
ALTER TABLE `schicht_plan_temp` DROP `anzahl` ;
RENAME TABLE schicht_plan_temp TO schicht_plan;

Das kommt jetzt in ein kleines Shellscript, damits gleich automatisch nach dem Import aufräumt.


Crash Override schrieb am 16.03.2016 um 14:13

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