2017-01-03 1 views
0

Ich habe einfach mySql Frage ähnlich wie SO „Update mysql Spalte“ Ich habe eine Tabelle table1 mit mindestens zwei Spalten Spalten und eine Reihe von Zeilen: [key_col | col_a | col_other] Ich möchte zu update eine Spalte col_a wenn key_col = Nummer existiert oder einfügen wenn nicht existiert. Ich muss zuerst auswählen oder aktualisieren, automatisch einfügen?aktualisieren oder Einfügen mysql Spalte

Antwort

0

Wenn key_col ein Primärschlüssel ist, dann ersetze es in statt einzufügen in ..... ersetzen in wird einfügen wenn der Schlüssel nicht existiert sonst aktualisiere wenn der Schlüssel existiert.

+0

http://dev.mysql.com/doc/refman/5.7/de/replace.html "REPLACE funktioniert genau wie INSERT, außer dass eine alte Zeile in der Tabelle den gleichen Wert wie eine neue Zeile für eine PRIMARY KEY oder ein UNIQUE-Index, die alte Zeile wird gelöscht "- Wie ändert man nur ein Feld als UPDATE und erhält anderes Feld? – Saku

+0

Ist es möglich, einen zusammengesetzten eindeutigen Schlüssel in allen anderen Feldern außer dem zu ändern, der aktualisiert wird – prashant

+0

SO "mysql Ersetze nur einige Felder" - INSERT INTO gfs (localidad, fecha, pp) WERTE ('some_place', ' 2012-08-05 02:00 ', 1.6) ON DUPLICATE KEY UPDATE pp = WERTE (pp); – Saku

2

Siehe diese Antwort: Insert into a MySQL table or update if exists

Was Sie sagte: „Ich aktualisieren möchten, wenn Schlüssel oder fügen Sie existiert nicht, wenn vorhanden“ ist gleichbedeutend mit der umgekehrten Reihenfolge: „einfügen, wenn nicht oder zu aktualisieren besteht, wenn vorhanden“, weil die 2 Fälle schließen sich gegenseitig aus.

Zuerst sicherstellen, dass key_col einen eindeutigen Index hat (wie: Primärschlüssel). Dann würde das funktionieren:

insert into 
    `table1` 
    (`key_col`, `col_a`, ...) 
values 
    (123, 234, ...) 
on duplicate key update 
    `col_a` = 234, ...; 

Bei "..." die anderen Felder platzieren.

Verwandte Themen