2010-10-25 2 views
24

Desidero creare una nuova tabella in SQL Server con la seguente query. Non riesco a capire perché questa query non funzioni.SELEZIONA NELL'UTILIZZO DI UNIONE QUERY

Query1: Funziona

SELECT * FROM TABLE1 
UNION 
SELECT * FROM TABLE2 

Query2: non funziona. Errore: Msg 170, Level 15, State 1, Line 7 Line 7: Incorrect syntax near ')'.

SELECT * INTO [NEW_TABLE] 
FROM 
(
SELECT * FROM TABLE1 
UNION 
SELECT * FROM TABLE2 
) 

Grazie!

risposta

50

è necessario definire un alias di tabella per una tabella derivata in SQL Server:

SELECT x.* 
    INTO [NEW_TABLE] 
    FROM (SELECT * FROM TABLE1 
     UNION 
     SELECT * FROM TABLE2) x 

"x" è l'alias tabella in questo esempio.

+0

Quando provo questo, non mi danno la somma del numero di record di TABLE1 e TABLE2, è sempre meno. Sapresti perché capita? Grazie! – Christa

+1

@Christa - Probabilmente a causa della stessa riga in entrambe le tabelle, verrà creato un solo record per il sindacato. Se usi 'UNION ALL', non rimuoverà i duplicati. – Hashman

1

Si può anche provare:

create table new_table as 
select * from table1 
union 
select * from table2 
+3

Sintassi non SQL Server. –

1
select * 
into new_table 
from table_A 
UNION 
Select * 
From table_B 

Funziona solo se Table_A e Table_B hanno gli stessi schemi

+0

È possibile utilizzare il formato dei nomi di tre (e quattro se la tabella è in un'istanza del server collegato) per accedere ad altri schemi e/o database. –