UPDATE mit untergeordneten Selects

alexfrenzel92

SQL-Guru
Beiträge
122
Hallo,

Code:
UPDATE Tabelle12 SET Spalte1 = (SELECT SpalteF FROM Tabelle3 INNER JOIN Tabelle12 ON Tabelle3.SpalteG = Tabelle12.Spalte2 WHERE SpalteA = Spalte5 AND Spalte1 = 1)


So sieht das Update per MySqli aus.

Wenn ich das Select in Klammern durch den direkte Wert liefert, ersetze, funktioniert das Update. Das Select in den Klammern funktioniert auch. Nur das Select innerhalb des Updates funktioniert nicht und liefert den Fehler:
Code:
#1093 - You can't specify target table 'Tabelle12' for update in FROM clause

Wie muss ich das ummodeln, damit das Update funktionert?

Tabellen- und Spaltennamen sind Alias

Gruß
Alex
 
Werbung:
Das ist kein Problem vom PHP-Treiber (MySQLi), sondern von MySQL selbst - das kann kein Update, wenn dieselbe Tabelle im selben Update Bestandteil eines Selects ist.

Ein Würgaround wäre, erst einmal eine temp. Tabelle zu füllen oder es in der Applikation zu speichern. Beides hat natürlich deutliche Nachteile. Die auf lange Sicht saubere Lösung wäre eine Migration von MySQL weg zu einer richtigen DB, z.B. PostgreSQL.
 
Ah ok, verstehe. Das ist ja fast schon nachvollziehbar, dass update keine Spalte updaten kann, während es im gleichen Schritt dort ein Select durchführt.
Dann werde ich Tabelle12 in mehrere Tabellen aufteilen, dann hoffe ich geht es.

Danke!
 
Werbung:
Zurück
Oben