448 Stimmen

Mehrfache Aktualisierungen in MySQL

Ich weiß, dass Sie mehrere Zeilen auf einmal einfügen können. Gibt es eine Möglichkeit, mehrere Zeilen auf einmal (d. h. in einer Abfrage) in MySQL zu aktualisieren?

Bearbeiten: Ich habe zum Beispiel folgendes

Name   id  Col1  Col2
Row1   1    6     1
Row2   2    2     3
Row3   3    9     5
Row4   4    16    8

Ich möchte alle folgenden Aktualisierungen in einer Abfrage kombinieren

UPDATE table SET Col1 = 1 WHERE id = 1;
UPDATE table SET Col1 = 2 WHERE id = 2;
UPDATE table SET Col2 = 3 WHERE id = 3;
UPDATE table SET Col1 = 10 WHERE id = 4;
UPDATE table SET Col2 = 12 WHERE id = 4;

-2voto

GateKiller Punkte 71039

Das folgende Beispiel aktualisiert alle Zeilen in einer Tabelle

Update Table Set
Column1 = 'New Value'

Die nächste Zeile aktualisiert alle Zeilen, in denen der Wert von Spalte2 größer als 5 ist

Update Table Set
Column1 = 'New Value'
Where
Column2 > 5

Es gibt alle Unkwntech Beispiel für die Aktualisierung von mehr als einer Tabelle

UPDATE table1, table2 SET
table1.col1 = 'value',
table2.col1 = 'value'
WHERE
table1.col3 = '567'
AND table2.col6='567'

-4voto

UnkwnTech Punkte 83318
UPDATE tableName SET col1='000' WHERE id='3' OR id='5'

Damit sollten Sie das erreichen, was Sie suchen. Fügen Sie einfach weitere IDs hinzu. Ich habe es getestet.

-6voto

user2082581 Punkte 11
UPDATE `your_table` SET 

`something` = IF(`id`="1","new_value1",`something`), `smth2` = IF(`id`="1", "nv1",`smth2`),
`something` = IF(`id`="2","new_value2",`something`), `smth2` = IF(`id`="2", "nv2",`smth2`),
`something` = IF(`id`="4","new_value3",`something`), `smth2` = IF(`id`="4", "nv3",`smth2`),
`something` = IF(`id`="6","new_value4",`something`), `smth2` = IF(`id`="6", "nv4",`smth2`),
`something` = IF(`id`="3","new_value5",`something`), `smth2` = IF(`id`="3", "nv5",`smth2`),
`something` = IF(`id`="5","new_value6",`something`), `smth2` = IF(`id`="5", "nv6",`smth2`) 

// Sie bauen es einfach in php wie

$q = 'UPDATE `your_table` SET ';

foreach($data as $dat){

  $q .= '

       `something` = IF(`id`="'.$dat->id.'","'.$dat->value.'",`something`), 
       `smth2` = IF(`id`="'.$dat->id.'", "'.$dat->value2.'",`smth2`),';

}

$q = substr($q,0,-1);

So können Sie die gesamte Tabelle mit einer Abfrage aktualisieren

0 Stimmen

Ich habe es nicht abgelehnt, aber ich denke, der Einwand bezieht sich darauf, dass man den Satz macht, wenn er nicht gebraucht wird (und man macht ihn trotzdem, wenn man ihn einstellt something a something )

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X