2010-02-08 8 views
5

Wie kann ich die ON DUPLICATE UPDATE mit einem mehrfachen INSERT verwenden?mysql bedingte Einfügung auf doppelte Aktualisierung - mehrere Datensätze

INSERT INTO tbl_name 
    (key_id,field1,filed2) 
VALUES 
    (1,2,3), 
    (1,5,6), 
    (1,8,9); 
+0

Was ist Ihr beabsichtigtes Ergebnis? Ich kann MySQL nur dazu bringen, '(1,5,6) ON DUPLICATE KEY UPDATE zu erlauben key_id = key_id + 1', aber bei der Ausführung habe ich nur eine Zeile in der Tabelle, Werte:' 2, 2, 3'. –

+0

Nun, die SQL ist ein Beispiel, aber das erwartete Ergebnis wäre, eine Abfrage auszuführen, die einfügen würde, wenn neu, Update, wenn für mehrere Werte duplizieren. also wenn key_id 1, 3 und 5 schon in der DB sind und ich INSERT für 2, 3, 4 und 6 starte. 2,4 und 6 sollten einfügen und 3 sollte aktualisieren, da es ein Duplikat war –

Antwort

11

Ich kann es jetzt nicht versuchen, aber können Sie verwenden diese Syntax nicht

INSERT INTO table (a,b,c) VALUES (1,2,3),(4,5,6) 
    ON DUPLICATE KEY UPDATE c=VALUES(a)+VALUES(b); 

vom manual?

Raten Sie Ihre Syntax dann würde wie folgt aussehen:

INSERT INTO tbl_name 
    (key_id,field1,filed2) 
VALUES 
    (1,2,3), 
    (1,5,6), 
    (1,8,9) 
ON DUPLICATE KEY 
    UPDATE field1=VALUES(field1), field2=VALUES(field2); 
+0

das muss ich verpasst haben, thnx –

Verwandte Themen