Ich habe zwei INSERT
-Befehle, die für mich so nutzlos sind, weil die zwei Reihen von Reihen - die, die bereits in der Tabelle sind, und diejenigen, die ich als INSERT
-Befehle habe - nicht disjunkt sind. Beide Befehle fügen viele Zeilen und viele Werte ein.
Daher erhalte ich den doppelten Eintragsfehler, wenn ich diese Zeilen ausführen möchte.
Gibt es eine einfache Möglichkeit, diese Befehle in UPDATE
zu konvertieren?
Ich weiß, das klingt doof, denn warum mache ich INSERT
-Befehle, wenn ich UPDATE
möchte. Nur um es ein klares Szenario zu machen: ein anderer Entwickler gab mir das Skript:)
Vielen Dank im Voraus, Daniel
BEARBEITEN - Problem gelöst
Zuerst habe ich eine Tabelle erstellt und sie mit meinen INSERT
-Befehlen gefüllt, dann habe ich den folgenden REPLACE
-Befehl verwendet:
Dies kann ursprünglich gefunden werden unter: Wie kann ich zwei MySQL-Tabellen zusammenführen?
Das Schlüsselwort REPLACE
von MySQL tut dies. Ersetzen Sie einfach das INSERT
-Schlüsselwort in Ihren Abfragen durch das Wort REPLACE
, und es sollte die Zeilen aktualisieren, anstatt neue einzufügen. Bitte beachten Sie, dass dies nur funktioniert, wenn Sie einen Primärschlüssel oder eine eindeutige Schlüsselspalte einfügen.
Sie müssten sie von Hand in Updates umschreiben. Wenn ich auf ein solches Problem stoße, frage ich zuerst nach der Anzahl bestimmter Primärschlüssel, wenn keine gefunden werden, füge ich einen generischen Datensatz ein und aktualisiere ihn danach. Dadurch können neue Daten hinzugefügt und bereits vorhandene Daten aktualisiert werden, und Sie müssen nicht zwischen dem Einfügen neuer Daten und dem Aktualisieren von Daten unterscheiden.
Für MySQL können Sie entweder die Syntax INSERT IGNORE
oder INSERT ... ON DUPLICATE UPDATE
verwenden. Weitere Informationen finden Sie im MySQL-Referenzhandbuch
Sie können Ihre Abfragen einfach ändern, um doppelte Zeilen zu aktualisieren, siehe INSERT .. . ON DUPLICATE KEY Syntax in MySQL
Tags und Links mysql insert-update