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

SQL INTERSECT

    SQL交差演算子は、2つ以上のSELECTステートメントを組み合わせるために使用されますが、SELECTステートメントと同様のデータのみを表示します。

    INTERSECT操作の構文:

    SELECT COLUMN_NAME1, COLUMN_NAME2, COLUMN_NAME3 FROM TABLE_NAME1 INTERSECT SELECT COLUMN_NAME1, COLUMN_NAME2, COLUMN_NAME3 FROM TABLE_NAME2;

    INTERSECT演算子を使用する際に従うべきルールは次のとおりです。

    1. 列の数と列の順序は同じである必要があります。
    2. データ型は互換性がある必要があります。

    例を使用して、SQLINTERSECTの概念を理解しましょう。

    与えられたレコードと一緒に次の表を検討してください。

    表1:学生

    STUDENT_ID STUDENT_NAME PHYSICS_MARKS CHEMISTRY_MARKS MATHS_MARKS TOTAL_MARKS
    1 NEHA 85 88 100 273
    2 VISHAL 70 90 82 242
    3 SAMKEET 75 88 96 259
    4 NIKHIL 60 75 80 215
    5 YOGESH 56 65 78 199
    6 アンキタ 95 85 96 276
    7 ソナム 98 89 100 287
    8 VINEET 85 90 100 275
    9 SANKET 86 78 65 229
    10 PRACHI 90 80 75 245
    101 SNEHA 85 88 100 273
    103 VISHAL 75 88 96 259

    表2:スタッド

    STUDENT_ID STUDENT_NAME PHYSICS_MARKS CHEMISTRY_MARKS MATHS_MARKS TOTAL_MARKS
    4 NIKHIL 60 75 80 215
    6 アンキタ 95 85 96 276
    7 ソナム 98 89 100 287
    9 SANKET 86 78 65 229
    101 SNEHA 85 88 100 273
    102 SAMKEET 70 90 82 242
    103 VISHAL 75 88 96 259
    105 YOGESHWARI 56 65 78 199
    106 VINAY 85 90 100 275
    107 プラシャカ 90 80 75 245
    8 VINEET 85 90 100 275

    例1: クエリを実行して、StudentテーブルとStudテーブルの間でINTERSECT操作を実行します。

    SELECT * FROM STUDENT INTERSECT SELECT * FROM STUD;

    上記のクエリでは、2つのSELECTクエリを使用しました。最初のSELECTクエリは、Studentテーブルからデータをフェッチします。スタッドテーブルからデータを取得する2番目のSELECTクエリによってフェッチされたデータを使用してINTERSECT操作を実行します。これら2つのテーブル間で類似したレコードのみが選択されます。

    上記のクエリからの出力は次のとおりです:

    STUDENT_ID STUDENT_NAME PHYSICS_MARKS CHEMISTRY_MARKS MATHS_MARKS TOTAL_MARKS
    4 NIKHIL 60 75 80 215
    6 アンキタ 95 85 96 276
    7 ソナム 98 89 100 287
    8 VINEET 85 90 100 275
    9 SANKET 86 78 65 229
    101 SNEHA 85 88 100 273
    103 VISHAL 75 88 96 259

    StudentTableとStudテーブルの間の共通レコードのみが表示されます。

    例2: クエリを実行して、StudentテーブルとStudテーブルの間でINTERSECT操作を実行しますが、数学マークが100に等しいStudテーブルのStudentレコードのみを表示します。

    SELECT * FROM STUDENT INTERSECT SELECT * FROM STUD WHERE MATHS_MARKS = 100;

    上記のクエリからの出力は次のとおりです:

    STUDENT_ID STUDENT_NAME PHYSICS_MARKS CHEMISTRY_MARKS MATHS_MARKS TOTAL_MARKS
    7 ソナム 98 89 100 287
    8 VINEET 85 90 100 275
    101 SNEHA 85 88 100 273

    スタッドテーブルの数学マークが100に等しく、学生とスタッドテーブルの両方に共通する学生のレコードのみが表示されます。

    例3: クエリを実行して、StudentテーブルとStudテーブルの間でINTERSECT操作を実行しますが、化学マークが80より大きいStudentテーブルのStudentレコードのみを表示します。

    SELECT * FROM STUDENT WHERE CHEMISTRY_MARKS > 80 INTERSECT SELECT * FROM STUD;

    上記のクエリからの出力は次のとおりです:

    STUDENT_ID STUDENT_NAME PHYSICS_MARKS CHEMISTRY_MARKS MATHS_MARKS TOTAL_MARKS
    6 アンキタ 95 85 96 276
    7 ソナム 98 89 100 287
    8 VINEET 85 90 100 275
    101 SNEHA 85 88 100 273
    103 VISHAL 75 88 96 259

    学生テーブルの化学マークが80を超え、学生テーブルとスタッドテーブルの両方に共通する学生のレコードのみが表示されます。

    例4: クエリを実行して、StudentテーブルとStudテーブルの間でINTERSECT操作を実行し、Studentテーブルから物理マークが75を超えるStudentレコードのみを表示し、次に、数学マークが90を超えるStudentレコードのみを表示するクエリを選択します。スタッド。

    SELECT * FROM STUDENT WHERE PHYSICS_MARKS > 75 INTERSECT SELECT * FROM STUD WHERE MATHS_MARKS > 90;

    上記のクエリからの出力は次のとおりです:

    STUDENT_ID STUDENT_NAME PHYSICS_MARKS CHEMISTRY_MARKS MATHS_MARKS TOTAL_MARKS
    6 アンキタ 95 85 96 276
    7 ソナム 98 89 100 287
    8 VINEET 85 90 100 275
    101 SNEHA 85 88 100 273

    物理マークが学生テーブルから75を超え、数学マークがスタッドテーブルから90を超え、学生とスタッドテーブルの両方に共通する学生のレコードのみが表示されます。


    1. ORACLESQLlistagg関数

    2. EBS R12.2 /StandaloneWeblogicでWeblogicサーバーのバージョン/パッチを検索する

    3. MySQLクイックヒント:LENGTHおよびTRIM関数の使用

    4. カスタムデータベースアプリケーションのメリットはありますか?