かなめのロジック

フリーSEの雑記ブログ。ORACLEやPostgreSQL、情報セキュリティ、金融について主に書いています。

集合演算子のMINUS

time 2017/12/07

集合演算子のMINUS

本記事では集合演算子のMINUSについて、その使い方を解説します。

※当ページにおいて、検索結果イメージのNULLは【NULL】と表現しています。

sponsored link

MINUSとは

2つの問い合わせ結果を1つの結果にまとめるのが集合演算子です。

MINUSは、その集合演算子の1つで、1つ目の問い合わせには存在するが、2つ目の問い合わせには存在しないデータを抽出します。

注意点としては、1つ目の問い合わせに重複があった場合、1つにまとめられます。

NULLも問題なく処理できます。
NULLが1つ目の問い合わせの結果が存在、2つ目の問い合わせには存在しない場合は、NULLが抽出されます。
また、NULLが両方の問い合わせに存在する場合は、NULLは抽出されません。

使用時の注意点

集合演算子では、以下の2点に注意して使いましょう。比較的馴染みのあるUNIONやUNION ALLと同じです。

抽出時の項目名は最初の問い合わせを採用

2つの問い合わせで問い合わせで抽出項目名が異なっていてもエラーにはなりませんが、最初の問い合わせの項目名が採用されます。

ソートは最後で指定

ソートする場合は、最後で指定します。その際指定する項目名は、最初の問い合わせで指定した項目を記述します。

エラーになるケース2つ

集合演算子では、以下の2つのケースで実行エラーとなります。こちらもUNIONやUNION ALLと同じです。

抽出項目数が異なる(ORA-01789)

2つの問い合わせの抽出項目数が異なる場合、実行エラー(ORA-01789)になります。

抽出項目のデータ型の種類が異なる(ORA-01790)

2つの問い合わせの抽出項目のデータ型の種類が異なる場合、実行エラー(ORA-01790)になります。

例えば、問い合わせ1が文字型で問い合わせ2が数値型といったような場合にエラーとなります。
しかし、同じ文字型であるCHARとVARCHAR2などは問題ありません。

関連(集合演算子)


sponsored link

管理人

かなめ

フリーの業務系システムエンジニア。情報処理安全確保支援士。 ORACLEと金融と子育ての狭間で、元気に楽しくやってます。 [詳細]

管理人twitter

ブログ村



sponsored link