UPDATE tableübergreifend verwenden

hias

New Member
Hallo.

Ist es möglich, den Wert einer Spalte einem anderen Wert, der sich in einer anderen Table befindet, gleichzusetzen.
die syntax stimmt natürlich nicht. von der logik her, soll es so aussehen:
UPDATE TABLE1 SET TABLE1.SPALTE1 [where id=4] = TABLE2.SPALTE2 [where id=11]

ich hoffe ihr wisst, wie ich das mein. bei fragen bitte melden.

Danke im Vorraus :)
 
Ja, mit einem Subselect:

Code:
UPDATE
  tableA
SET
  spalte = (
    SELECT
      spalte
    FROM
      tableB
    WHERE
      yxz...
  )
WHERE
  xyz...

Dabei ist es essentiell, dass der Subselect nur eine einzige Spalte einer einzigen Zeile liefert.
Das äußere Update-Statement darf ruhig mehrere Zeilen betreffen.

Der Subselect darf natürlich im WHERE auch vom äußeren Table abhängig sein - muss aber trotzdem in jedem Fall nur eine Ergebniszeile haben.
Bei einem Bezug des inneren Statement auf das äußere ist die Verwendung von Aliasen empfehlenswert.

Code:
UPDATE
  tableA a
SET
  spalte = (
    SELECT
      spalte
    FROM
      tableB b
    WHERE
      b.column = a.criteria
    ORDER BY
      sortorder ASC
    LIMIT 1
  )

PS: Die Beispiele sind mit meinem Gefühl für PgSQL gemacht - evtl. sind für andere Server kleine Anpassungen an deren Dialekt nötig.
 
Last edited by a moderator:
Back
Top