Frage

Gibt es eine Möglichkeit, mehrere Zeilen mit unterschiedlichen Werten für jede Zeile mithilfe einer einzelnen SQL -Abfrage zu aktualisieren? Ich muss ein Colum in vielen Zeilen mit unterschiedlichen Daten aktualisieren. Die Verwendung individueller Update -Abfragen für jede Zeile scheint übermäßig übermäßig zu sein. Wenn es möglich ist, möchte ich diesen Prozess in eine einzelne SQL -Anweisung konsolidieren oder zumindest die Anzahl der erforderlichen Abfragen reduzieren.

Ich verwende PHP mit dem Zend Framework und MySQL.

War es hilfreich?

Lösung

Erstellen Sie eine temporäre Tabelle und füllen Sie sie mit:

CREATE TEMPORARY TABLE temptable (id INTEGER, VALUE VARCHAR(200))

INSERT
INTO temptable
VALUES
  ('1', 'val1'),
  ('2', 'val2'),
  ('3', 'val3'),
  ('4', 'val4')

Dann Ausgabe:

UPDATE
  mytable m, temptable t
SET m.value = t.value
WHERE m.id = t.id

Andere Tipps

Ich weiß nicht speziell über MySQL, sondern um mehrere Zeilen basierend auf einer Auswahl oder einer Vereinigung mehrerer Auswahl zu aktualisieren, würde ich tun

UPDATE U
SET MyColumn = T.OtherColumn
FROM MyUpdateTable AS U
     JOIN
     (
         SELECT [OtherColumn] = OtherColumn1
         FROM MyOtherTable1
         WHERE ...
         UNION
         SELECT OtherColumn2
         FROM MyOtherTable2
         WHERE ...
     ) AS T
         ON T.ID = U.ID

Aktualisieren Sie 28.10.2014, konvertiert in die Arbeit für MySQL:

UPDATE MyUpdateTable AS U
    JOIN
    (
        SELECT [OtherColumn] = OtherColumn1
        FROM MyOtherTable1
        WHERE ...
        UNION
        SELECT OtherColumn2
        FROM MyOtherTable2
        WHERE ...
    ) AS T
        ON T.ID = U.ID
        SET MyColumn = T.OtherColumn

Ich weiß, dass dies für SQL Server funktioniert, also ist es einen Versuch in MySQL wert.

update xtable
set a = 
   Case
     when a = "a"
     then z
     when a = "b"
     then y
   End
where ...

Sie können die Fallanweisung basierend auf Ihren verschiedenen Zeilen konstruieren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top