2017-09-29 5 views
-2

Wie kann ich mehrere Zeilen aktualisieren und leere Werte ignorieren?MySQL: mehrere Zeilen aktualisieren, leere Werte ignorieren?

EDIT:

INSERT INTO tbl_name 
    (id, v1, v2) 
VALUES 
    (1, 2, 3), 
    (4, , ), 
    (7, 8, 9) 
ON DUPLICATE KEY UPDATE 
v1=VALUES(v1), v2=VALUES(v2); 

Wie kann ich nicht überschreiben Daten wie (v1, v2) bei id = 4? d. H. Ist es möglich, wenn die Daten leer sind (oder speziell auf andere Weise formatiert sind), sie nicht in der DB zu überschreiben, wenn die ID doppelt vorhanden ist und eine Aktualisierung stattfinden soll?

+0

ps hinzufügen können, neugierig, wie habe ich in den ersten 45 Sekunden -2 Punkte bekommen? Klingt nach weniger als genug Zeit, um die Frage zu lesen. – bbe

+2

Nicht mein Downvote hier, aber es ist wahrscheinlich, weil Sie nicht die eigentliche Abfrage, die Sie versucht haben, und etwaige Fehler, die Sie möglicherweise hatten, wenn vorhanden. Ich kann nicht für die Downvoters sprechen, aber das könnte es sein, oder ein Teil davon. Es gibt auch kein PHP hier, nach dem Tag, den du dafür benutzt hast. –

+2

Wir sind immer froh, neuen Codern zu helfen und zu unterstützen, aber *** Sie müssen sich zuerst helfen. : -) *** Nach [** mehr Forschung **] (https://meta.stackoverflow.com/q/261592/1011527) Wenn Sie ein Problem haben ** posten, was Sie versucht haben ** mit einem ** Klare Erklärung dessen, was nicht funktioniert ** und ein [minimales, vollständiges und überprüfbares Beispiel] (http://stackoverflow.com/help/mcve) bereitstellen. Lesen Sie [Wie Sie fragen] (http://stackoverflow.com/help/how-to-ask) eine gute Frage. Achten Sie darauf, [die Tour zu besuchen] (http://stackoverflow.com/tour) und lesen [this] (https://meta.stackoverflow.com/q/347937/1011527). –

Antwort

0

Die einzige Überprüfung, die ich hier sehen würde, ist, einfügen ... auf Duplikat erst nach 1 überprüfen, ob alle Variablen da sind.

if(isset($value_for_col1) && isset($value_for_col2) && ...){ do insert } 

Oder Sie können Ihre Spalten in der Struktur als „nicht null“ gesetzt und jeder Einsatz wird nicht funktionieren, da Sie nicht einen Einsatz ohne Parsen einen Wert für alle das gewünschte Feld