2010-10-25 1 views
24

Я хочу создать новую таблицу на SQL Server со следующим запросом. Я не могу понять, почему этот запрос не работает.ВЫБРАТЬ В ИСПОЛЬЗОВАНИЕ СОЮЗА QUERY

Query1: Работы

SELECT * FROM TABLE1 
UNION 
SELECT * FROM TABLE2 

Query2: не работает. Ошибка: 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 
) 

Спасибо!

ответ

50

Вы должны определить псевдоним таблицы для производной таблицы в SQL Server:

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

«х» это псевдоним таблицы в этом примере.

+0

Когда я пытаюсь это, он не дает мне сумму количества записей ТАБЛИЦА 1 и ТАБЛИЦА 2, это всегда меньше. Вы случайно не знаете, почему это происходит? Спасибо! – Christa

+1

@Christa - Вероятно, из-за того, что в обеих таблицах имеется одна и та же строка, она сделает только одну запись для объединения. Если вы используете 'UNION ALL', он не будет удалять дубликаты. – Hashman

1

Вы также можете попробовать:

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

Синтаксис SQL Server. –

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

это работает только если TABLE_A и TABLE_B имеют те же схемы

+0

Для доступа к другим схемам и/или базам данных вы можете использовать три (и четыре, если таблица относится к экземпляру Linked Server). –