2011-06-23 29 views
8

我有一個簡單的查詢如下圖所示:如何將UNION查詢結果移動到新表中?

SELECT  * 
FROM   [#temp1] 
UNION 
SELECT  * 
FROM   [#temp2] 
UNION 
SELECT  * 
FROM   [#temp3] 
UNION 
SELECT  * 
FROM   [#temp4] 
UNION 
SELECT  * 
FROM   [#temp5] 

如何移動這些查詢的這個請求到一個新表? 注:我的SQL的verison是:

Microsoft SQL Server 2008 (SP1) - 10.0.2531.0 (X64) Mar 29 2009 10:11:52 Copyright (c) 1988-2008 Microsoft Corporation Enterprise Edition (64-bit) on Windows NT 6.0 <X64> (Build 6002: Service Pack 2) 

我嘗試另一個#1的答案,我發現,即

CREATE TABLE managers AS SELECT * FROM employees WHERE desg = 'MANAGER'; 

,但我得到的錯誤:Incorrect syntax near the keyword 'as'.

這裏是我的全部查詢失敗,出現以上錯誤:

CREATE TABLE #temp_UNION as 


SELECT  * 
FROM   [#temp1] 
UNION 
SELECT  * 
FROM   [#temp2] 
UNION 
SELECT  * 
FROM   [#temp3] 
UNION 
SELECT  * 
FROM   [#temp4] 
UNION 
SELECT  * 
FROM   [#temp5] 

任何建議請o ñ我如何去玩?

謝謝 雷

回答

12

在SQL Server中,你必須使用

SELECT <COLUMNS_LIST> 
    INTO <NEW_TABLE_NAME> 
    FROM <TABLES, WHERE ETC> 

更多信息@http://msdn.microsoft.com/en-us/library/ms188029.aspx

試試這個:

SELECT * 
    INTO #temp_UNION 
FROM 
(
     SELECT  * 
    FROM   [#temp1] 
    UNION 
    SELECT  * 
    FROM   [#temp2] 
    UNION 
    SELECT  * 
    FROM   [#temp3] 
    UNION 
    SELECT  * 
    FROM   [#temp4] 
    UNION 
    SELECT  * 
    FROM   [#temp5] 
) a 
+0

完美...它的工作。但是最後一個括號之後的'a'是什麼意思? – Ray

+0

它是整個UNION查詢的別名,SQL Server希望將別名分配給內聯視圖。 – Chandu

+0

謝謝,Cyber​​nate。非常有用的信息!我知道我不應該在評論中提問,但我希望這次能夠原諒我。但是,我可以直接查詢別名嗎?或者這純粹是出於語法原因? – Ray

0
insert into temp_UNION 
select * from (
SELECT  * 
FROM   [#temp1] 
UNION 
SELECT  * 
FROM   [#temp2] 
UNION 
SELECT  * 
FROM   [#temp3] 
UNION 
SELECT  * 
FROM   [#temp4] 
UNION 
SELECT  * 
FROM   [#temp5] 
) 
0

或者你不需要使用派生表。你也可以這樣做

SELECT * INTO #temp_UNION 
FROM   [#temp1]  
UNION  
SELECT  *  FROM   [#temp2]  
UNION  SELECT  *  FROM   [#temp3]  
UNION  SELECT  *  FROM   [#temp4]  
UNION  SELECT  *  FROM   [#temp5] 
0

SELECT * INTO #Temp_Union FROM [#temp1中] UNION SELECT * FROM [#TEMP2] UNION SELECT * FROM [#TEMP3] UNION SELECT * FROM [#temp4] UNION SELECT * FROM [#temp5]

相關問題