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演算子を使用する際に従うべきルールは次のとおりです。
- 列の数と列の順序は同じである必要があります。
- データ型は互換性がある必要があります。
例を使用して、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を超え、学生とスタッドテーブルの両方に共通する学生のレコードのみが表示されます。