2012-09-10 13 views
7

so di poter fare qualcosa di simile:Creare una tabella sulla base di alcune colonne di un altro tavolo, ma anche aggiungere alcune colonne aggiuntive

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

mi chiedo come faccio ad aggiungere più colonne per creare questa tabella SQL, che non sono da my_table, ma invece quelli che vorrei scrivere da soli e che sarebbe unico solo per questo new_table.

So che potrei semplicemente creare la tabella con il precedente SQL e quindi addizionalmente (dopo aver completato il comando) aggiungere le colonne necessarie, ma mi chiedo se tutto ciò potrebbe essere fatto in un unico comando, forse qualcosa di simile (provato in quel modo, ma non ha funzionato):

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

Vuoi tabella vuota new_table con questa struttura? –

+0

no, non voglio una tabella vuota, non voglio che la tabella venga popolata con i campi dalla tabella 'my_table' e addizionalmente voglio aggiungere i miei campi che, per impostazione predefinita, saranno aggiunti alcuni valori (appena aggiunti' DEFAULT' al mio esempio di sql sopra) – Nikola

+0

La risposta aggiornata dovrebbe funzionare per voi. – Omesh

risposta

7

è anche possibile specificare esplicitamente il tipo di dati per una colonna generato:

Vedi 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 
); 

Esempio: SQLFiddle

Problemi correlati