MINUS 操作¶
MINUS 操作では、最初のステートメントによって返されるすべての行が返されます。ただし、同じ操作にある他のクエリによって返される行は除外されます。
この操作の構文を以下に示します。
<query 1> MINUS <query 2> [ MINUS <query N> MINUS <query N+1> ]
たとえば、以下の内容を持つ 3 つのビューがあるとします。
View_A |
|
---|---|
A |
B |
1 |
x |
2 |
b |
4 |
d |
View_B |
|
---|---|
Col_1 |
Col_2 |
1 |
a |
2 |
z |
6 |
f |
View_C |
|
---|---|
Col_1 |
Col_2 |
1 |
a |
2 |
b |
5 |
e |
このクエリを実行します。
SELECT * FROM
( SELECT A FROM View_A
MINUS
SELECT Col_1 AS A
FROM View_B
MINUS
SELECT Col_A AS A FROM View_C)
その結果は以下のようになります。
<query> |
---|
A |
4 |
このクエリの結果は、最初のクエリの結果から、同じクエリにある他のクエリによって返される行を除外したものになります。
MINUS
クエリに使用するクエリは、以下の規則に従っている必要があります。
どの入力クエリも同じスキーマを返す必要があります。つまり、すべてのクエリの結果に、同じ名前で同じ数のフィールドが存在する必要があります。
括弧
(
と)
を使用すると、MINUS 操作の実行順序を指定できます。ビューの順序によって、ビューの結果が異なることがあります。たとえば、クエリが
<query 1> MINUS <query 2> MINUS <query 3>
の場合は、まず<query 1>
と<query 2>
との MINUS 操作が実行され、つづいてその中間結果と<query 3>
との MINUS 操作が実行されます。クエリが
<query 3> MINUS <query 2> MINUS <query 1>
の場合は、まず<query 3>
と<query 2>
との MINUS 操作が実行され、つづいてその中間結果と<query 1>
との MINUS 操作が実行されます。どちらのクエリでも同じクエリを使用していますが、操作結果は異なることがあります。