1

ユニオンを使用してクエリを実行し、結果に追加の条件を付けようとしています。基本的に、私は次のようなものが欲しい

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 に答える