SQL intersect-operator bruges til at kombinere to eller flere SELECT-sætninger, men den viser kun data, der ligner SELECT-sætningen.
Syntaksen for INTERSECT-operationen:
SELECT COLUMN_NAME1, COLUMN_NAME2, COLUMN_NAME3 FROM TABLE_NAME1 INTERSECT SELECT COLUMN_NAME1, COLUMN_NAME2, COLUMN_NAME3 FROM TABLE_NAME2;
Regler, der skal følges ved brug af INTERSECT-operatoren, er som følger:
- Antallet af kolonner og rækkefølgen af kolonner skal være det samme.
- Datatypen skal være kompatibel.
Lad os forstå begrebet SQL INTERSECT ved hjælp af eksempler.
Overvej følgende tabeller sammen med de givne poster.
Tabel 1:Elev
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 | ANKITA | 95 | 85 | 96 | 276 |
7 | SONAM | 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 |
Tabel 2:Stud
STUDENT_ID | STUDENT_NAME | PHYSICS_MARKS | CHEMISTRY_MARKS | MATHS_MARKS | TOTAL_MARKS |
4 | NIKHIL | 60 | 75 | 80 | 215 |
6 | ANKITA | 95 | 85 | 96 | 276 |
7 | SONAM | 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 | PRASHAKA | 90 | 80 | 75 | 245 |
8 | VINEET | 85 | 90 | 100 | 275 |
Eksempel 1: Udfør en forespørgsel for at udføre INTERSECT-operation mellem Student-tabel og Stud-tabel.
SELECT * FROM STUDENT INTERSECT SELECT * FROM STUD;
I ovenstående forespørgsel har vi brugt to SELECT-forespørgsler. Den første SELECT-forespørgsel henter dataene fra elevtabellen. Den udfører INTERSECT-operation med dataene hentet af den anden SELECT-forespørgsel, der henter dataene fra Stud-tabellen. Kun lignende poster mellem disse to tabeller er valgt.
Outputtet fra ovenstående forespørgsel er:
STUDENT_ID | STUDENT_NAME | PHYSICS_MARKS | CHEMISTRY_MARKS | MATHS_MARKS | TOTAL_MARKS |
4 | NIKHIL | 60 | 75 | 80 | 215 |
6 | ANKITA | 95 | 85 | 96 | 276 |
7 | SONAM | 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 |
Kun almindelige poster mellem Elev-tabellen og Stud-tabellerne vises.
Eksempel 2: Udfør en forespørgsel for at udføre INTERSECT-operation mellem Student-tabellen og Stud-tabellen, men vis kun de Student-poster fra Stud-tabellen, hvor matematiske karakterer er lig med 100.
SELECT * FROM STUDENT INTERSECT SELECT * FROM STUD WHERE MATHS_MARKS = 100;
Outputtet fra ovenstående forespørgsel er:
STUDENT_ID | STUDENT_NAME | PHYSICS_MARKS | CHEMISTRY_MARKS | MATHS_MARKS | TOTAL_MARKS |
7 | SONAM | 98 | 89 | 100 | 287 |
8 | VINEET | 85 | 90 | 100 | 275 |
101 | SNEHA | 85 | 88 | 100 | 273 |
Kun de elevers poster vises, hvis matematiske karakterer er lig med 100 fra Stud-tabellen og er fælles for både Elev- og Stud-tabellen.
Eksempel 3: Udfør en forespørgsel for at udføre INTERSECT-operation mellem Student-tabellen og Stud-tabellen, men vis kun de Student-poster fra Elev-tabellen, hvor kemimærkerne er større end 80.
SELECT * FROM STUDENT WHERE CHEMISTRY_MARKS > 80 INTERSECT SELECT * FROM STUD;
Outputtet fra ovenstående forespørgsel er:
STUDENT_ID | STUDENT_NAME | PHYSICS_MARKS | CHEMISTRY_MARKS | MATHS_MARKS | TOTAL_MARKS |
6 | ANKITA | 95 | 85 | 96 | 276 |
7 | SONAM | 98 | 89 | 100 | 287 |
8 | VINEET | 85 | 90 | 100 | 275 |
101 | SNEHA | 85 | 88 | 100 | 273 |
103 | VISHAL | 75 | 88 | 96 | 259 |
Kun de studerendes poster vises, hvis kemikarakterer er større end 80 fra elevtabellen og er fælles for både elev- og Stud-tabellen.
Eksempel 4: Udfør en forespørgsel for at udføre INTERSECT-operation mellem Student-tabel og Stud-tabel og vis kun de Student-poster, hvor fysikkarakterer er større end 75 fra Elev-tabellen, og vælg derefter forespørgsler, der kun viser de Student-poster, hvor matematikkarakterer er større end 90 fra Stud.
SELECT * FROM STUDENT WHERE PHYSICS_MARKS > 75 INTERSECT SELECT * FROM STUD WHERE MATHS_MARKS > 90;
Outputtet fra ovenstående forespørgsel er:
STUDENT_ID | STUDENT_NAME | PHYSICS_MARKS | CHEMISTRY_MARKS | MATHS_MARKS | TOTAL_MARKS |
6 | ANKITA | 95 | 85 | 96 | 276 |
7 | SONAM | 98 | 89 | 100 | 287 |
8 | VINEET | 85 | 90 | 100 | 275 |
101 | SNEHA | 85 | 88 | 100 | 273 |
Kun de elevers poster vises, hvis fysikkarakterer er større end 75 fra elevtabellen, og matematikkarakterer er større end 90 fra Stud-tabellen og er fælles for både Elev- og Stud-tabellen.