Schnellstes Update mit Subselect in MySQL?

Schnellstes Update mit Subselect in MySQL?
Es kam die Anfrage herein, die Werte für ein Feld in einer Datenbank-Tabelle für alle Datensätze so zu ändern, dass sich der neue Wert aus einem vorgegeben String und einem anderen Feld aus der gleichen Tabelle zusammensetzt. Eigentlich ein klassischer Fall für ein Subselect, aber soweit ich weiß, ist ein Subselect in einem Update auf auf die gleiche Tabelle nicht möglich.

Mir ist nur die folgende Lösung eingefallen:

CREATE TABLE temp_select SELECT * original_tabelle;
UPDATE original_tabelle SET dasFeld = (
  SELECT
   CONCAT('prefix-',dasAndereFeld)
   FROM temp_select
   WHERE
    temp_select.id = original_tabelle.id
);
DROP TABLE temp_select;

Ist immer noch recht einfach, aber vielleicht hat ja jemand noch eine bessere Idee – Anregungen und Vorschläge sind sehr willkommen.

Tags:

Hinterlasse eine Antwort