Operator przecięcia SQL służy do łączenia dwóch lub więcej instrukcji SELECT, ale wyświetla tylko dane podobne do instrukcji SELECT.
Składnia operacji INTERSECT:
SELECT COLUMN_NAME1, COLUMN_NAME2, COLUMN_NAME3 FROM TABLE_NAME1 INTERSECT SELECT COLUMN_NAME1, COLUMN_NAME2, COLUMN_NAME3 FROM TABLE_NAME2;
Zasady, których należy przestrzegać przy użyciu operatora INTERSECT, są następujące:
- Liczba kolumn i kolejność kolumn muszą być takie same.
- Typ danych musi być zgodny.
Zrozummy pojęcie SQL INTERSECT za pomocą przykładów.
Rozważ poniższe tabele wraz z podanymi rekordami.
Tabela 1:Uczeń
STUDENT_ID | NAZWISKO UCZNIA | 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 | JOGESZ | 56 | 65 | 78 | 199 |
6 | ANKITA | 95 | 85 | 96 | 276 |
7 | SONAM | 98 | 89 | 100 | 287 |
8 | WININA | 85 | 90 | 100 | 275 |
9 | KOSZULKA | 86 | 78 | 65 | 229 |
10 | PRACI | 90 | 80 | 75 | 245 |
101 | SNEHA | 85 | 88 | 100 | 273 |
103 | VISHAL | 75 | 88 | 96 | 259 |
Tabela 2:ćwieki
STUDENT_ID | NAZWISKO UCZNIA | 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 | KOSZULKA | 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 | PRASZKA | 90 | 80 | 75 | 245 |
8 | WININA | 85 | 90 | 100 | 275 |
Przykład 1: Wykonaj zapytanie, aby wykonać operację INTERSECT między tabelą Studenta a tabelą Stud.
SELECT * FROM STUDENT INTERSECT SELECT * FROM STUD;
W powyższym zapytaniu użyliśmy dwóch zapytań SELECT. Pierwsze zapytanie SELECT pobiera dane z tabeli Student. Wykonuje operację INTERSECT na danych pobranych przez drugie zapytanie SELECT, które pobiera dane z tabeli Stud. Wybierane są tylko podobne rekordy między tymi dwiema tabelami.
Wyniki powyższego zapytania to:
STUDENT_ID | NAZWISKO UCZNIA | 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 | WININA | 85 | 90 | 100 | 275 |
9 | KOSZULKA | 86 | 78 | 65 | 229 |
101 | SNEHA | 85 | 88 | 100 | 273 |
103 | VISHAL | 75 | 88 | 96 | 259 |
Wyświetlane są tylko wspólne rekordy między tabelą uczniów a tabelami stadnin.
Przykład 2: Wykonaj zapytanie, aby wykonać operację INTERSECT między tabelą Student a tabelą Stud, ale wyświetlaj tylko te rekordy Studentów z tabeli Stud, w których oceny matematyczne są równe 100.
SELECT * FROM STUDENT INTERSECT SELECT * FROM STUD WHERE MATHS_MARKS = 100;
Wyniki powyższego zapytania to:
STUDENT_ID | NAZWISKO UCZNIA | PHYSICS_MARKS | CHEMISTRY_MARKS | MATHS_MARKS | TOTAL_MARKS |
7 | SONAM | 98 | 89 | 100 | 287 |
8 | WININA | 85 | 90 | 100 | 275 |
101 | SNEHA | 85 | 88 | 100 | 273 |
Wyświetlane są tylko rekordy uczniów, których oceny matematyczne są równe 100 z tabeli Stud i są wspólne zarówno dla tabeli Student, jak i Stud.
Przykład 3: Wykonaj zapytanie, aby wykonać operację INTERSECT między tabelą Student a tabelą Stud, ale wyświetlaj tylko te rekordy Studentów z tabeli Student, w których oceny z chemii są większe niż 80.
SELECT * FROM STUDENT WHERE CHEMISTRY_MARKS > 80 INTERSECT SELECT * FROM STUD;
Wyniki powyższego zapytania to:
STUDENT_ID | NAZWISKO UCZNIA | PHYSICS_MARKS | CHEMISTRY_MARKS | MATHS_MARKS | TOTAL_MARKS |
6 | ANKITA | 95 | 85 | 96 | 276 |
7 | SONAM | 98 | 89 | 100 | 287 |
8 | WININA | 85 | 90 | 100 | 275 |
101 | SNEHA | 85 | 88 | 100 | 273 |
103 | VISHAL | 75 | 88 | 96 | 259 |
Wyświetlane są tylko rekordy uczniów, których oceny z chemii są większe niż 80 z tabeli uczniów i są wspólne dla tabeli uczniów i stadnin.
Przykład 4: Wykonaj zapytanie, aby wykonać operację INTERSECT między tabelą Uczniów a tabelą Stud i wyświetl tylko te rekordy Uczniów, w których oceny fizyczne są większe niż 75 z Tabeli Uczniów, a drugie zapytania wybierające wyświetlają tylko te rekordy Uczniów, w których oceny matematyczne są większe niż 90 z tabeli Uczniów Stud.
SELECT * FROM STUDENT WHERE PHYSICS_MARKS > 75 INTERSECT SELECT * FROM STUD WHERE MATHS_MARKS > 90;
Wyniki powyższego zapytania to:
STUDENT_ID | NAZWISKO UCZNIA | PHYSICS_MARKS | CHEMISTRY_MARKS | MATHS_MARKS | TOTAL_MARKS |
6 | ANKITA | 95 | 85 | 96 | 276 |
7 | SONAM | 98 | 89 | 100 | 287 |
8 | WININA | 85 | 90 | 100 | 275 |
101 | SNEHA | 85 | 88 | 100 | 273 |
Wyświetlane są tylko rekordy uczniów, których oceny z fizyki są większe niż 75 w Tabeli Uczniów, a oceny matematyczne są większe niż 90 w Tabeli Studów i są wspólne zarówno dla Tabeli Ucznia, jak i Studa.