1

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

SELECT * FROM (A UNION B) WHERE 条件

这可能吗?当我尝试执行

SELECT * FROM (A UNION B)

SQL Management Studio 抱怨右括号:

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

4

4 回答 4

2
SELECT * 
FROM ( SELECT * FROM A
       UNION
       SELECT * FROM B
) temp 
WHERE condition
于 2013-09-19T13:55:27.197 回答
1

这是正确的语法:

SELECT *
FROM (select from A
      UNION
      select from B
     ) ab
WHERE condition;

我同意from语句的原始语法“看起来正确”,但 SQL 不允许这样做。此外,您需要子查询的别名(SQL Server 的要求)。union all最后,如果您知道表中没有重复项,您可以考虑使用。

于 2013-09-19T13:55:38.913 回答
1

CTE怎么样:

with tbl as (
   select * from a 
   union 
   select * from b) 
select * from tbl where condition
于 2013-09-19T13:55:41.740 回答
0

为派生表使用别名

SELECT * FROM (select * from A UNION select * from B) as t WHERE condition
于 2013-09-19T13:57:27.747 回答