SQL intersect-operator används för att kombinera två eller flera SELECT-satser, men den visar bara data som liknar SELECT-satsen.
Syntaxen för INTERSECT-operationen:
SELECT COLUMN_NAME1, COLUMN_NAME2, COLUMN_NAME3 FROM TABLE_NAME1 INTERSECT SELECT COLUMN_NAME1, COLUMN_NAME2, COLUMN_NAME3 FROM TABLE_NAME2;
Regler som ska följas med INTERSECT-operatorn är följande:
- Antalet kolumner och ordningen på kolumner måste vara samma.
- Datatypen måste vara kompatibel.
Låt oss förstå begreppet SQL INTERSECT med hjälp av exempel.
Betrakta följande tabeller tillsammans med de givna posterna.
Tabell 1:Student
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 |
Tabell 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 |
Exempel 1: Kör en fråga för att utföra INTERSECT-operationen mellan Student-tabellen och Stud-tabellen.
SELECT * FROM STUDENT INTERSECT SELECT * FROM STUD;
I ovanstående fråga har vi använt två SELECT-frågor. Den första SELECT-frågan hämtar data från elevtabellen. Den utför INTERSECT-operationen med data som hämtas av den andra SELECT-frågan som hämtar data från Stud-tabellen. Endast liknande poster mellan dessa två tabeller väljs.
Utdata från ovanstående fråga är:
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 |
Endast vanliga poster mellan Studenttabellen och Stud-tabellerna visas.
Exempel 2: Kör en fråga för att utföra INTERSECT-operationen mellan Student-tabellen och Stud-tabellen men visa endast de Student-poster från Stud-tabellen där matematiska poäng är lika med 100.
SELECT * FROM STUDENT INTERSECT SELECT * FROM STUD WHERE MATHS_MARKS = 100;
Utdata från ovanstående fråga är:
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 |
Endast de elevers poster visas vars matematiska poäng är lika med 100 från Stud-tabellen och är gemensamma mellan både Student- och Stud-tabellen.
Exempel 3: Kör en fråga för att utföra INTERSECT-operationen mellan Student-tabellen och Stud-tabellen, men visa endast de Student-poster från Student-tabellen där kemibetygen är större än 80.
SELECT * FROM STUDENT WHERE CHEMISTRY_MARKS > 80 INTERSECT SELECT * FROM STUD;
Utdata från ovanstående fråga är:
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 |
Endast de elevers poster visas vars kemibetyg är större än 80 från Studenttabellen och är gemensamma mellan både Student- och Stud-tabellen.
Exempel 4: Kör en fråga för att utföra INTERSECT-operation mellan Student-tabellen och Stud-tabellen och visa endast de Student-poster där fysikbetygen är större än 75 från Student-tabellen, och välj sedan frågor som endast visar de Student-poster där matematikbetygen är större än 90 från Stud.
SELECT * FROM STUDENT WHERE PHYSICS_MARKS > 75 INTERSECT SELECT * FROM STUD WHERE MATHS_MARKS > 90;
Utdata från ovanstående fråga är:
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 |
Endast de elevers poster visas vars fysikbetyg är större än 75 från elevtabellen, och matematikbetyg är större än 90 från studtabellen och är vanliga mellan både elev- och studtabellen.