Bla*_*ter 25 sql union sql-server-2005
是否可以从联盟的结果中进行选择?例如,我正在尝试做类似的事情:
SELECT A
FROM
(
SELECT A, B FROM TableA
UNION
SELECT A, B FROM TableB
)
WHERE B > 'some value'
Run Code Online (Sandbox Code Playgroud)
我错过了什么或假设这是如何工作的?我正在使用MSSQL 2005,因此任何解决方案都需要符合我在那里可以做的事情.
him*_*056 45
你应该给你的表别名.试试这个:
SELECT A
FROM
(
SELECT A, B FROM TableA
UNION
SELECT A, B FROM TableB
) AS tbl
WHERE B > 'some value'
Run Code Online (Sandbox Code Playgroud)
提供别名,否则您将收到
Msg 156, Level 15, State 1, Line 21
Incorrect syntax near the keyword 'WHERE'.
Run Code Online (Sandbox Code Playgroud)
试试这个(给出别名)
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
Run Code Online (Sandbox Code Playgroud)
结果
A
1
1
1
1
2
2
2
2
Run Code Online (Sandbox Code Playgroud)