ユニオンを使用してクエリを実行し、結果に追加の条件を付けようとしています。基本的に、私は次のようなものが欲しい
SELECT * FROM (A UNION B) WHERE 条件
これは可能ですか?実行しようとすると
SELECT * FROM (A UNION B)
SQL Management Studio は閉じ括弧について不平を言います:
')' 付近の構文が正しくありません。
ユニオンを使用してクエリを実行し、結果に追加の条件を付けようとしています。基本的に、私は次のようなものが欲しい
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