sql >> データベース >  >> RDS >> Oracle

OracleMINUS演算子の説明

    Oracle Databaseでは、MINUS 演算子は、最初のクエリによって返される一意の行のみを返すために使用されますが、2番目のクエリによって返されることはありません。

    次のテーブルがあるとします。

    SELECT * FROM Teachers;
    SELECT * FROM Students;

    結果:

    TEACHERID TEACHERNAME
    1 ウォーレン
    2 ベン
    3 キャシー
    4 キャシー
    5 請求書
    6 請求書
    STUDENTID 学生名
    1 フェイ
    2 ジェット
    3 スパイク
    4 アイン
    5 ウォーレン
    6 請求書

    MINUSを使用できます 生徒ではない教師を返すためのオペレーター:

    SELECT TeacherName FROM Teachers
    MINUS
    SELECT StudentName FROM Students;

    結果:

    TEACHERNAME
    ベン
    キャシー

    したがって、Teachersに表示される値のみを取得します Studentsにも表示されないテーブル テーブル。

    左側にあるテーブルと右側にあるテーブルに応じて、異なる結果を得ることができます。 Studentsを配置する例を次に示します。 左側の表とTeachers 右側:

    SELECT StudentName FROM Students
    MINUS
    SELECT TeacherName FROM Teachers;

    結果:

    STUDENTNAME
    Ein
    フェイ
    ジェット
    スパイク

    今回は、教師ではない生徒を迎えます。

    MINUS 演算子は個別の行のみを返します。したがって、この例では、Cathyに対して1行だけが返されます。 、その名前の先生が2人いるのに。

    代替案

    MINUSを使用しなくても同じ結果を得ることができます オペレーター。たとえば、最初の例を次のように書き直すことができます。

    SELECT 
        DISTINCT TeacherName
    FROM Teachers t
    WHERE NOT EXISTS (SELECT StudentName FROM Students s
    WHERE t.TeacherName = s.StudentName);

    結果:

    TEACHERNAME
    ベン
    キャシー

    MINUS 他のRDBMSの同等物

    OracleのMINUS 演算子はEXCEPTに似ています 他の多くのRDBMSが使用する演算子。 MariaDBにはEXCEPTがあります 演算子ですが、MINUSも導入されています Oracleモードで使用できる同義語としての演算子。


    1. MariaDBで数値をフォーマットする方法

    2. データベースでPIIを分類、検索、マスクする方法…

    3. 外部キー違反が原因でSQLexceptionがスローされたかどうかを確認するにはどうすればよいですか?

    4. #1273-不明な照合:'utf8mb4_unicode_ci' cPanel