El operador de intersección de SQL se usa para combinar dos o más instrucciones SELECT, pero solo muestra los datos de forma similar a la instrucción SELECT.
La sintaxis de la operación INTERSECT:
SELECT COLUMN_NAME1, COLUMN_NAME2, COLUMN_NAME3 FROM TABLE_NAME1 INTERSECT SELECT COLUMN_NAME1, COLUMN_NAME2, COLUMN_NAME3 FROM TABLE_NAME2;
Las reglas a seguir con el operador INTERSECT son las siguientes:
- El número de Columnas y el Orden de las Columnas deben ser iguales.
- El tipo de datos debe ser compatible.
Comprendamos el concepto de SQL INTERSECT con la ayuda de ejemplos.
Considere las siguientes tablas junto con los registros proporcionados.
Tabla 1:Estudiante
STUDENT_ID | NOMBRE_ESTUDIANTE | PHYSICS_MARKS | MARCAS_QUÍMICAS | MATHS_MARKS | TOTAL_MARCAS |
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 |
Tabla 2:Stud
STUDENT_ID | NOMBRE_ESTUDIANTE | PHYSICS_MARKS | MARCAS_QUÍMICAS | MATHS_MARKS | TOTAL_MARCAS |
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 |
Ejemplo 1: Ejecute una consulta para realizar la operación INTERSECT entre la tabla Student y la tabla Stud.
SELECT * FROM STUDENT INTERSECT SELECT * FROM STUD;
En la consulta anterior, hemos utilizado dos consultas SELECT. La primera consulta SELECT obtiene los datos de la tabla Student. Realiza la operación INTERSECT con los datos obtenidos por la segunda consulta SELECT que recupera los datos de la tabla Stud. Solo se seleccionan registros similares entre estas dos tablas.
El resultado de la consulta anterior es:
STUDENT_ID | NOMBRE_ESTUDIANTE | PHYSICS_MARKS | MARCAS_QUÍMICAS | MATHS_MARKS | TOTAL_MARCAS |
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 |
Solo se muestran los registros comunes entre la tabla Student y las tablas Stud.
Ejemplo 2: Ejecute una consulta para realizar la operación INTERSECT entre la tabla Student y la tabla Stud, pero muestre solo los registros de los estudiantes de la tabla Stud donde las notas matemáticas sean iguales a 100.
SELECT * FROM STUDENT INTERSECT SELECT * FROM STUD WHERE MATHS_MARKS = 100;
El resultado de la consulta anterior es:
STUDENT_ID | NOMBRE_ESTUDIANTE | PHYSICS_MARKS | MARCAS_QUÍMICAS | MATHS_MARKS | TOTAL_MARCAS |
7 | SONAM | 98 | 89 | 100 | 287 |
8 | VINEET | 85 | 90 | 100 | 275 |
101 | SNEHA | 85 | 88 | 100 | 273 |
Solo se muestran los registros de los estudiantes cuyas calificaciones matemáticas son iguales a 100 de la tabla Stud y son comunes entre las tablas Student y Stud.
Ejemplo 3: Ejecute una consulta para realizar la operación INTERSECT entre la tabla Student y la tabla Stud, pero muestre solo los registros de Student de la tabla Student donde las calificaciones químicas sean mayores que 80.
SELECT * FROM STUDENT WHERE CHEMISTRY_MARKS > 80 INTERSECT SELECT * FROM STUD;
El resultado de la consulta anterior es:
STUDENT_ID | NOMBRE_ESTUDIANTE | PHYSICS_MARKS | MARCAS_QUÍMICAS | MATHS_MARKS | TOTAL_MARCAS |
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 |
Solo se muestran los registros de los estudiantes cuyas notas de química son superiores a 80 en la tabla de estudiantes y son comunes entre la tabla de estudiantes y la de Stud.
Ejemplo 4: Ejecute una consulta para realizar la operación INTERSECT entre la tabla de Estudiantes y la tabla de Stud y muestre solo los registros de Estudiantes donde las calificaciones de física son mayores a 75 de la Tabla de Estudiantes, y luego seleccione consultas que muestren solo los registros de Estudiantes donde las calificaciones de matemáticas son mayores a 90 de la Tabla de Estudiantes. Semental.
SELECT * FROM STUDENT WHERE PHYSICS_MARKS > 75 INTERSECT SELECT * FROM STUD WHERE MATHS_MARKS > 90;
El resultado de la consulta anterior es:
STUDENT_ID | NOMBRE_ESTUDIANTE | PHYSICS_MARKS | MARCAS_QUÍMICAS | MATHS_MARKS | TOTAL_MARCAS |
6 | ANKITA | 95 | 85 | 96 | 276 |
7 | SONAM | 98 | 89 | 100 | 287 |
8 | VINEET | 85 | 90 | 100 | 275 |
101 | SNEHA | 85 | 88 | 100 | 273 |
Solo se muestran los expedientes de los estudiantes cuyas notas de física superan los 75 en la tabla de estudiantes y las notas de matemáticas superan los 90 en la tabla de estudios y son comunes entre la tabla de estudiantes y la de estudios.