2012-09-10 9 views
7

Ich weiß, dass ich etwas tun kann:Erstellen Sie eine Tabelle basierend auf wenige Spalten einer anderen Tabelle, sondern fügen auch einige zusätzliche Spalten

CREATE TABLE new_table AS (
    SELECT field1, field2, field3 
    FROM my_table 
) 

Ich frage mich, wie kann ich mehr Spalten auf diese erstellen Tabelle hinzufügen SQL, die nicht von my_table sind, sondern stattdessen diejenigen, die ich selbst schreiben würde und die nur für diese einzigartig wären.

Ich weiß, ich könnte nur die Tabelle mit dem obigen SQL machen und dann (nachdem der Befehl abgeschlossen ist) addieren Sie die notwendigen Spalten, aber ich frage mich, ob das alles in einem Befehl, vielleicht so etwas (versucht es so, aber hat nicht funktioniert):

CREATE TABLE new_table AS (
    (SELECT field1, field2, field3 
    FROM my_table), 
    additional_field1 INTEGER NOT NULL DEFAULT 1, 
    additional_field2 VARCHAR(20) NOT NULL DEFAULT 1 
) 
+0

Wollen Sie leere Tabelle new_table mit dieser Struktur? –

+0

nein, ich möchte keine leere Tabelle, ich möchte die Tabelle mit den Feldern aus der Tabelle 'my_table' füllen und zusätzlich möchte ich meine Felder hinzufügen, die standardmäßig einen Wert haben (nur hinzugefügt' DEFAULT 'zu meinem sql Beispiel oben) – Nikola

+0

Aktualisierte Antwort sollte für Sie arbeiten. – Omesh

Antwort

7

Sie können auch den Datentyp explizit angeben für eine generierte Spalte:

Create Table Select Manual

CREATE TABLE new_table 
(
additional_field1 INTEGER NOT NULL DEFAULT 1, 
additional_field2 VARCHAR(20) NOT NULL DEFAULT 1 
) 
AS 
(
SELECT id, val, 
     1 AS additional_field1, 
     1 AS additional_field2 
FROM my_table 
); 
anzeigen

Beispiel: SQLFiddle

Verwandte Themen