MINUS 操作

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 操作が実行されます。どちらのクエリでも同じクエリを使用していますが、操作結果は異なることがあります。