2012-09-13 107 views
18

是否可以從聯合結果中進行選擇?舉例來說,我試圖做類似的事情:從聯盟中選擇tsql

SELECT A 
FROM 
(
    SELECT A, B FROM TableA 
    UNION 
    SELECT A, B FROM TableB 
) 
WHERE B > 'some value' 

我錯過了什麼,或者假設它是如何工作的?我正在使用MSSQL 2005,所以任何解決方案都需要符合我在那裏可以做的事情。

+0

是的,它是可能的。有什麼問題嗎? – hims056

+0

我收到錯誤'關鍵字'WHERE'附近的錯誤語法。'並且無法運行查詢。 – BlargleMonster

+1

缺少別名name..check提供的答案 –

回答

35

你應該給別名您的餐桌。所以,試試這個:

SELECT A 
FROM 
(
    SELECT A, B FROM TableA 
    UNION 
    SELECT A, B FROM TableB 
) AS tbl 
WHERE B > 'some value' 
3

給沒有它,您將收到

Msg 156, Level 15, State 1, Line 21 
Incorrect syntax near the keyword 'WHERE'. 

試試這個(給別名)

DECLARE @TableA Table(A int, B int) 
DECLARE @TableB Table(A int, B int) 

INSERT INTO @TableA VALUES(1,1) 
INSERT INTO @TableA VALUES(1,2) 
INSERT INTO @TableA VALUES(1,3) 
INSERT INTO @TableA VALUES(1,4) 

INSERT INTO @TableB VALUES(2,1) 
INSERT INTO @TableB VALUES(2,2) 
INSERT INTO @TableB VALUES(2,3) 
INSERT INTO @TableB VALUES(2,4) 

SELECT A 
FROM 
(
    SELECT A, B FROM @TableA 
    UNION 
    SELECT A, B FROM @TableB 
)X -- here X is table Alias 
WHERE B > 0 

結果

一個別名

1 
1 
1 
1 
2 
2 
2 
2