2014-09-06 23 views
-1

如何使用UNION運算符使用工會

select top 5 Name into [#Production.Productmodel] 
from   [Production].[ProductModel] 
select top 5 Name into [#purchasing.shipmethod] 
from   [Purchasing].[ShipMethod] 
select Name into #productionprod 
select Name from [#purchasing.shipmethod] 
union 
select Name from [#Production.Productmodel] 

,但我仍然得到一個錯誤(無效列名)

回答

0

您可以使用into創建一個臨時表創建臨時表。這裏有一個例子:

select Name 
into #productionprod 
from [#purchasing.shipmethod] 
union 
select Name 
from [#Production.Productmodel] 
3

查詢失敗的原因是,你是重複查詢的SELECT NAME,所以刪除第二個:

select Name 
into #productionprod 
from [#purchasing.shipmethod] 
union 
select Name from [#Production.Productmodel] 

你也可以用了兩個子查詢這樣的:

select Name into #productionprod 
from (
    select Name from [#purchasing.shipmethod] 
    union 
    select Name from [#Production.Productmodel] 
) subquery 

在一個側面說明:如果你是第一個選擇爲[#Production.Productmodel][#purchasing.shipmethod]的唯一原因是使用這些臨時表是作爲從SELECT ... INTO #productionprod烏爾斯河那麼你的查詢可以簡化爲這樣:

SELECT Name INTO #productionprod 
FROM (
    SELECT TOP 5 Name 
    FROM [Production].[ProductModel] ORDER BY name 
    UNION 
    SELECT TOP 5 Name 
    FROM [Production].[ShipMethod] ORDER BY name 
) a 

請注意,當您使用TOP n沒有ORDER BY作爲documentation陳述的順序是不確定的:

當TOP一起使用使用ORDER BY子句,結果集 限於前N個有序行;否則,它以未定義的順序返回前N個行數。