Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

UPDATE mit untergeordneten Selects

Dieses Thema im Forum "MySQL und MariaDB" wurde erstellt von alexfrenzel92, 28 Juni 2016.

  1. alexfrenzel92

    alexfrenzel92 Datenbank-Guru

    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
     
  2. akretschmer

    akretschmer Datenbank-Guru

    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.
     
  3. alexfrenzel92

    alexfrenzel92 Datenbank-Guru

    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!
     
  4. akretschmer

    akretschmer Datenbank-Guru

    Nein, ist es nicht. In PostgreSQL geht es z.B.
     
  5. ukulele

    ukulele Datenbank-Guru

    Das geht auch bei MySQL wenn man das ganze noch in ein Subquery packt. Konnte das nie testen da ich MySQL nicht nutze aber ich sehe es immer wieder.

    mysql update from select - same table
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden