2010-10-25 11 views
24

SQL Server'da aşağıdaki sorguya sahip yeni bir tablo oluşturmak istiyorum. Bu sorgunun neden çalışmadığını anlayamıyorum.UNION QUERY KULLANIMINI SEÇİN

Sorgu1:

SELECT * FROM TABLE1 
UNION 
SELECT * FROM TABLE2 

Query2 Works: Çalışmıyor. Hata: 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 
) 

teşekkürler!

cevap

50

SQL Server Türetilmiş tablo için bir tablo diğer adı tanımlamak zorunda:

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

"x", bu örnekte tablo diğer adıdır.

+0

TABLE1 ve TABLE2, her zaman daha azdır. Bunun neden olduğunu biliyor musun? Teşekkür ederim! – Christa

+1

@Christa - Muhtemelen her iki tabloda da aynı satır olması nedeniyle, yalnızca birleşme için bir kayıt yapacak. "UNION ALL" ifadesini kullanırsanız, kopyaları kaldırmaz. – Hashman

1

Ayrıca deneyebilirsiniz:

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

SQL Server sözdizimi değil. –

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

Bu yalnızca işleri Table_A ve Table_B aynı şemaları varsa ben bu çalıştığınızda, bana kayıtların sayısının toplamı vermez

+0

Diğer şemalara ve/veya veritabanlarına erişmek için üç (ve tablonun Bağlantılı Sunucu örneğindeyse dördü) ad biçimini kullanabilirsiniz. –