是否可以从联合的结果中进行选择?例如,我正在尝试执行以下操作:
SELECT A
FROM
(
SELECT A, B FROM TableA
UNION
SELECT A, B FROM TableB
)
WHERE B > 'some value'
我是否遗漏了什么或假设这是如何工作的?我正在使用 MSSQL 2005,所以任何解决方案都需要符合我可以在那里做的事情。
是否可以从联合的结果中进行选择?例如,我正在尝试执行以下操作:
SELECT A
FROM
(
SELECT A, B FROM TableA
UNION
SELECT A, B FROM TableB
)
WHERE B > 'some value'
我是否遗漏了什么或假设这是如何工作的?我正在使用 MSSQL 2005,所以任何解决方案都需要符合我可以在那里做的事情。
您应该为您的表提供别名。所以试试这个:
SELECT A
FROM
(
SELECT A, B FROM TableA
UNION
SELECT A, B FROM TableB
) AS tbl
WHERE B > 'some value'
提供别名,否则您将收到
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