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