El operador IN es un operador de pertenencia que devuelve valores que coinciden con los valores de una lista o subconsulta. Usando este operador podemos especificar múltiples valores en una Cláusula WHERE. Este operador compara un valor con un conjunto de valores y devuelve verdadero si el valor pertenece a ese conjunto dado, de lo contrario devuelve falso. Es una forma abreviada de múltiples condiciones OR .
Sintaxis 1 (LISTA):
SELECCIONE columna1, columna2….columnaN
DESDE table_name
WHERE column_name IN (val-1, val-2,…val-N);
Sintaxis 2 (SUBCONSULTA):
SELECCIONE columna1, columna2….columnaN
DESDE table_name1
DONDE nombre_columna EN
(SELECCIONE column_name
DESDE table_name2);
Intentemos esto paso a paso en Microsoft SQL Server:
Creación de la base de datos:
REGISTRO
CREATE DATABASE RECORD;
Cambiar a base de datos:
Use la siguiente instrucción SQL para cambiar la base de datos a REGISTRO:
USE RECORD;
Creando tabla:
Ahora creamos una tabla llamada CURSO en nuestra base de datos de REGISTRO:
CREATE TABLE COURSE( course_id INT, course_name VARCHAR(20), duration_of_course INT, PRIMARY KEY(course_id) );
Ahora nuevamente creamos otra tabla llamada ESTUDIANTE en nuestra base de datos de REGISTRO:
CREATE TABLE STUDENT( roll_no INT, student_name VARCHAR(20), course_id INT, PRIMARY KEY(roll_no) );
Insertando los datos en las tablas:
Use la siguiente declaración para insertar datos en la tabla CURSO:
INSERT INTO COURSE(course_id, course_name, duration_of_course) VALUES(1, 'BCA', 3); INSERT INTO COURSE(course_id, course_name, duration_of_course) VALUES(2, 'MCA', 3); INSERT INTO COURSE(course_id, course_name, duration_of_course) VALUES(3, 'B.E.', 4); INSERT INTO COURSE(course_id, course_name, duration_of_course) VALUES(4, 'M.E.', 2); INSERT INTO COURSE(course_id, course_name, duration_of_course) VALUES(5, 'Integrated BE and ME', 5);
Nuevamente, usando la declaración a continuación, insertamos datos en la tabla ESTUDIANTE:
INSERT INTO STUDENT(roll_no, student_name, course_id) VALUES(1, 'ANDREW', 1); INSERT INTO STUDENT(roll_no, student_name, course_id) VALUES(2, 'BOB', 1); INSERT INTO STUDENT(roll_no, student_name, course_id) VALUES(3, 'CHARLES', 1); INSERT INTO STUDENT(roll_no, student_name, course_id) VALUES(4, 'DAIZY', 3); INSERT INTO STUDENT(roll_no, student_name, course_id) VALUES(5, 'EMMANUEL', 2); INSERT INTO STUDENT(roll_no, student_name, course_id) VALUES(6, 'FAIZAL', 2); INSERT INTO STUDENT(roll_no, student_name, course_id) VALUES(7, 'GEORGE', 4); INSERT INTO STUDENT(roll_no, student_name, course_id) VALUES(8, 'HARSH', 5); INSERT INTO STUDENT(roll_no, student_name, course_id) VALUES(9, 'ISHA', 2); INSERT INTO STUDENT(roll_no, student_name, course_id) VALUES(10, 'JULIAN', 2); INSERT INTO STUDENT(roll_no, student_name, course_id) VALUES(11, 'KAILASH', 3); INSERT INTO STUDENT(roll_no, student_name, course_id) VALUES(12, 'LAIBA', 5); INSERT INTO STUDENT(roll_no, student_name, course_id) VALUES(13, 'MICHAEL', 3);
Visualización de los datos de las tablas:
Ahora, usando la siguiente declaración, mostramos el contenido de la tabla CURSO:
SELECT * FROM COURSE;
Nuevamente, usando la declaración a continuación, mostramos el contenido de la tabla ESTUDIANTE:
SELECT * FROM STUDENT;
Cláusula IN con la lista:
SELECT * FROM STUDENT WHERE course_id IN (1, 2, 3);
Cláusula IN con la subconsulta:
SELECT * FROM STUDENT WHERE course_id IN (SELECT course_id FROM COURSE WHERE duration_of_course = 3);