2016-07-27 12 views
-1

Kann mir bitte jemand helfen, eine Anfrage zu schreiben? Ich werde täglich Daten in die MySQL-Datenbank einfügen, indem ich eine Python-Skript-Quelldatei verwende, die die bisherigen Datensätze enthält. Ich möchte jedoch nur diejenigen Datensätze einfügen, die neu sind und noch nicht eingefügt wurden. Wenn jedoch Spalten ohne Primärschlüssel für diese Datensätze aktualisiert wurden, möchte ich den vorhandenen Datensatz aktualisieren.Einfügen, wenn nicht existiert sonst aktualisieren Sie den Datensatz

Anforderungen: 1. Neuen Datensatz einfügen. 2. Wenn ein Datensatz existiert (für PK), fügen Sie keinen Datensatz hinzu. 3. Wenn ein Datensatz existiert (für PK), aber keine Primärschlüssel geändert wurden, aktualisieren Sie den vorhandenen Datensatz (für PK).

CREATE TABLE `S_account` (
    `Sub` varchar(45) DEFAULT NULL, 
    `AccName` varchar(45) DEFAULT NULL, 
    `AccTeam` varchar(45) DEFAULT NULL, 
    `Terr` varchar(45) DEFAULT NULL, 
    `AccOwner` varchar(45) DEFAULT NULL, 
    `Level1` varchar(45) DEFAULT NULL, 
    `GAccount` varchar(45) DEFAULT NULL, 
    `Customer` varchar(45) DEFAULT NULL, 
    `City` varchar(45) DEFAULT NULL, 
    `State` varchar(45) DEFAULT NULL, 
    `EndCus` varchar(45) DEFAULT NULL, 
    `AccID` varchar(45) NOT NULL, 
    PRIMARY KEY (`AccID`) USING BTREE 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 
+0

soweit ich sehen kann, hat dies nur eine PK? –

+0

Würden Sie es selbst ausprobieren und uns zeigen, wo Sie stecken bleiben? – halfer

Antwort

1

Die folgende Abfrage hat den Job für mich erledigt. Ich musste AccID von Update entfernen, da das der PK ist und nicht aktualisieren sollte.

INSERT INTO S_account(
    Sub, AccName, AccTeam, Terr, AccOwner, Level1, GAccount, Customer, 
    City, State, EndCusName, AccID 
) VALUES (
    "test", "test", "test", "test", "test", "No", "Yes", 
    "test", "test", "test", "asdasdas" 
) 
ON DUPLICATE KEY UPDATE 
    Sub = VALUES(Sub), AccName = VALUES(AccName), AccTeam = VALUES(AccTeam), 
    Terr = VALUES(Terr), AccOwner = VALUES(AccOwner), 
    Level1 = VALUES(Level1), GAccount = VALUES(GAccount), 
    Customer = VALUES(Customer), City = VALUES(City), 
    State = VALUES(State), EndCusName = VALUES(EndCusName) 
Verwandte Themen