Ответ 1
Вы должны указать псевдоним своей таблицы. Поэтому попробуйте следующее:
SELECT A
FROM
(
SELECT A, B FROM TableA
UNION
SELECT A, B FROM TableB
) AS tbl
WHERE B > 'some value'
Можно ли выбрать результат объединения? Например, я пытаюсь сделать что-то вроде:
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