我正在尝试使用union执行查询,然后在结果上添加一个附加条件。基本上,我想要像
这样的东西SELECT * FROM(A UNION B)WHERE条件
这可能吗?当我尝试执行
时SELECT * FROM(A UNION B)
SQL Management Studio抱怨结束括号:
')'附近的语法不正确。
答案 0 :(得分:2)
SELECT *
FROM ( SELECT * FROM A
UNION
SELECT * FROM B
) temp
WHERE condition
答案 1 :(得分:1)
这是正确的语法:
SELECT *
FROM (select from A
UNION
select from B
) ab
WHERE condition;
我同意from
语句的原始语法“看起来正确”,但SQL不允许它。此外,您需要子查询上的别名(SQL Server的要求)。最后,如果您知道表中没有重复项,则可以考虑使用union all
。
答案 2 :(得分:1)
CTE如何:
with tbl as (
select * from a
union
select * from b)
select * from tbl where condition
答案 3 :(得分:0)
使用派生表的别名
SELECT * FROM (select * from A UNION select * from B) as t WHERE condition