2012-09-13 36 views
18

Có thể chọn từ kết quả của công đoàn không? Ví dụ: Tôi đang cố gắng làm một việc gì đó như:Chọn từ union tsql

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

Tôi thiếu bất kỳ điều gì hoặc giả định về cách hoạt động của tính năng này? Tôi đang sử dụng MSSQL 2005 vì vậy mọi giải pháp sẽ cần phải phù hợp với những gì tôi có thể làm ở đó.

+0

Có thể thực hiện được. Có vấn đề gì không? – hims056

+0

Tôi nhận được lỗi 'Cú pháp không chính xác gần từ khóa' WHERE '.' và không thể chạy truy vấn. – BlargleMonster

+1

Thiếu tên bí danh..kiểm tra các câu trả lời được cung cấp –

Trả lời

35

Bạn nên cung cấp bí danh cho bảng của mình. Vì vậy hãy thử này:

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

Đưa tên bí danh mà không có nó bạn sẽ nhận được

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

Hãy thử điều này (Cho Bí danh Tên)

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 

quả

Một

1 
1 
1 
1 
2 
2 
2 
2