2017-01-31 3 views
0

In SQL (je nachdem, welche Variante Sie mögen, sagen MySQL oder MonetDB) es ist sehr intuitiv und einfach zu tun:Wie füge ich das Ergebnis einer SELECT als eine neue Spalte in einer vorhandenen Tabelle hinzu?

CREATE TABLE t2 AS SELECT c1 FROM t1; 

und das Auswahlergebnis als neue Spalte in einer neuen Tabelle bekommen. Aber was, wenn Sie das Ergebnis als eine neue Spalte in der gleichen Tabelle (Tabelle t1) wollen? Angenommen, c1 ist vom Typ INT und kann null sein. Wir bräuchten schreiben:

ALTER TABLE t1 ADD c2 INT; 
UPDATE TABLE t1 SET c2 = c1; 

und das ist die einfache Version, denn wenn es sich um eine nicht-Null-Spalte ist möchten wir die neue Spalte mit einem Wert initialisiert werden müssen; und wenn die Daten von mehreren Tabellen kommen, würde ich eine Art innere Abfrage in der UPDATE benötigen (wenn es überhaupt möglich wäre).

Kann ich irgendwie in eine Spalte mit einem einzigen Befehl auswählen?

Antwort

1

Sie verwenden join:

UPDATE t1 JOIN 
     t2 
     ON t2.? = t1.? 
    SET t1.c2 = t2.c1; 

Der ? ein Platzhalter für die Identität verwendet Spalte ist die Zeile in t2 aktualisieren sollte die Zeile in t1.

+0

Aber ich habe kein 't2'. Ich habe nur "t1". Ich möchte vermeiden, 't2' zu erstellen. – einpoklum

Verwandte Themen