ホームページ >php教程 >PHP开发 >Oracle マイナスの使用方法の詳細と適用例

Oracle マイナスの使用方法の詳細と適用例

高洛峰
高洛峰オリジナル
2017-01-06 10:59:342136ブラウズ

Oracle のマイナスの使い方

「マイナス」は中国語に直訳すると「マイナス」となります。Oracle では減算演算にも使用されますが、従来の意味での数値の減算ではなく、クエリの結果セットです。 A から B を引いたものは、結果セット B に含まれるすべてのレコードを結果セット A から削除した結果、つまり A には存在するが B には存在しないレコードを意味します。このアルゴリズムは、Java の Collection の deleteAll() に似ています。つまり、A から B を引いた場合、A と B の共通部分が削除されるだけです。B には存在するが A には存在しないレコードに対しては操作は実行されず、例外も発生しません。投げた。

Oracle のマイナスは列ごとに比較されるため、A からマイナス B への前提条件は、結果セット A と結果セット B の列数が同じである必要があり、同じ列インデックスを持つ列は同じデータ型である必要があります。さらに、Oracle はマイナス後の結果セットを重複排除します。つまり、A に元々複数の同一レコードがあった場合、A マイナス B の後には対応するレコードが 1 つだけ残ります。詳細については、以下の例を参照してください。个 MINUS の実際の適用例を見てみましょう。 id from t_user where id between 3 and 7" 結果は次のようになります:

Oracle minus用法详解及应用实例 (2) "select age,level_no from t_user where id< 8 マイナス select age,level_no from t_user where level=3" 結果は次のようになります:

このような結果を見ると、少し奇妙に感じるかもしれませんが、なぜこのようになるのでしょうか?それを分析してみましょう。まず、「select age,level_no from t_user where id<8」の結果は次のようになります:

Oracle minus用法详解及应用实例

次に、「select age,level_no from t_user where level=3」の結果は次のようになります:

Oracle minus用法详解及应用实例

その後、直接 A から B を引いた結果は次のようになります:

Oracle minus用法详解及应用实例

この時点で、結果セットに重複レコードがあることがわかり、重複排除後に上記の実際の結果が得られます。実際、minus の機能は A には存在するが B には存在しないレコードを検索することなので、これは簡単に理解できます。

Oracle minus用法详解及应用实例 上記の例はすべて単一のテーブルに関するものですが、単一のテーブル操作にマイナスを使用する利点は通常、テーブル A の一部のフィールドにテーブル B に対応するレコードがないことを確認するために使用されます。たとえば、t_user テーブルと同じテーブル構造を持つ別のテーブル t_user2 があるとすると、次のステートメントは、t_user テーブルには存在するが、id を除いて t_user2 テーブルには存在しないレコードを検索できます。

select no,name,age,level_no from t_user minus select no,name,age,level_no from t_user2;

読んでいただきありがとうございます、皆さんのお役に立てれば幸いです、このサイトをサポートしていただきありがとうございます!

Oracle マイナスの使用法と応用例のより詳細な説明については、PHP 中国語 Web サイトに注目してください。 Oracle minus用法详解及应用实例

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。