联合表上的SQL条件

时间:2013-09-19 13:53:40

标签: sql sql-server-2008-r2 union

我正在尝试使用union执行查询,然后在结果上添加一个附加条件。基本上,我想要像

这样的东西
  

SELECT * FROM(A UNION B)WHERE条件

这可能吗?当我尝试执行

  

SELECT * FROM(A UNION B)

SQL Management Studio抱怨结束括号:

  

')'附近的语法不正确。

4 个答案:

答案 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