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" 結果は次のようになります:
(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」の結果は次のようになります: 次に、「select age,level_no from t_user where level=3」の結果は次のようになります:その後、直接 A から B を引いた結果は次のようになります: この時点で、結果セットに重複レコードがあることがわかり、重複排除後に上記の実際の結果が得られます。実際、minus の機能は A には存在するが B には存在しないレコードを検索することなので、これは簡単に理解できます。
上記の例はすべて単一のテーブルに関するものですが、単一のテーブル操作にマイナスを使用する利点は通常、テーブル 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 サイトに注目してください。