SQL SELECT IN es un operador lógico en el lenguaje de consulta estructurado. Se utiliza en consultas SQL para reducir el uso de múltiples operadores 'OR'. s
El operador IN en SQL también permite probar fácilmente que la condición coincide con cualquier valor en una lista de valores. Reduce el número de operadores OR en consultas SQL.
Sintaxis del operador IN en SQL:
SELECT COLUMNNAME FROM TABLENAME WHERE COLUMNNAME IN (VALUE1, VALUE2);
Sintaxis de subconsulta del operador IN en SQL:
SELECT COLUMNNAME FROM TABLENAME WHERE COLUMNNAME IN (SELECT STATEMENT);
En la sintaxis anterior, también podemos usar el operador IN con la subconsulta.
Comprendamos el concepto SQL SELECT IN con la ayuda de ejemplos.
Considere las siguientes tablas que tienen los siguientes registros:
Tabla 1:Empleados
ID DE EMPLEADO | FIRST_NAME | APELLIDO | SALARIO | CIUDAD | DEPARTAMENTO | ID DE ADMINISTRADOR |
1001 | VAIBHAVI | MISHRA | 65500 | PUNE | ORACULO | 1 |
1002 | VAIBHAV | SHARMA | 60000 | NOIDA | C# | 5 |
1003 | NIKHIL | VANI | 50500 | JAIPUR | FMW | 2 |
2001 | PRACHI | SHARMA | 55500 | CHANDIGARH | ORACULO | 1 |
2002 | BHAVESH | JAÍN | 65500 | PUNE | FMW | 2 |
2003 | RUCHIKA | JAÍN | 50000 | BOMBAY | C# | 5 |
3001 | PRANOTI | SHENDE | 55500 | PUNE | JAVA | 3 |
3002 | ANUJA | WANRE | 50500 | JAIPUR | FMW | 2 |
3003 | DEEPAM | JAUHARI | 58500 | BOMBAY | JAVA | 3 |
4001 | RAJESH | GOUD | 60500 | BOMBAY | PRUEBA | 4 |
4002 | ASHWINI | BAGHAT | 54500 | NOIDA | JAVA | 3 |
4003 | RUCHIKA | AGARWAL | 60000 | DELHI | ORACULO | 1 |
5001 | ARCHIT | SHARMA | 55500 | DELHI | PRUEBA | 4 |
Mesa 2:Gerente
Administrador | nombre_administrador | gerente_departamento |
1 | Snehdeep Kaur | ORACULO |
2 | Kirti Kirtane | FMW |
3 | Abhishek Manish | JAVA |
4 | Anupam Mishra | PRUEBA |
5 | Akash Kadam | C# |
Ejemplo 1: Escriba una consulta para obtener la identificación del empleado, el nombre, el apellido y la ciudad de la tabla del empleado donde la ciudad incluye una de las listas que es Mumbai, Pune y Delhi en la tabla.
SELECT EMPLOYEEID, FIRST_NAME, LAST_NAME, CITY FROM EMPLOYEES WHERE CITY IN ('MUMBAI', 'PUNE', 'DELHI');
En la declaración anterior, recuperamos la identificación del empleado, el nombre y apellido, y la Ciudad de la tabla del empleado, donde Ciudad incluye uno de los nombres de ciudad, Mumbai, Pune y Delhi. Todos estos nombres de ciudades se pasan como un parámetro en el operador IN como valores. La tabla irá para todos aquellos registros cuyas ciudades de empleados coincidan con la lista de ciudades del parámetro del operador IN.
Salida:
ID DE EMPLEADO | FIRST_NAME | APELLIDO | CIUDAD |
1001 | VAIBHAVI | MISHRA | PUNE |
2002 | BHAVESH | JAÍN | PUNE |
2003 | RUCHIKA | JAÍN | BOMBAY |
3001 | PRANOTI | SHENDE | PUNE |
3003 | DEEPAM | JAUHARI | BOMBAY |
4001 | RAJESH | GOUD | BOMBAY |
4003 | RUCHIKA | AGARWAL | DELHI |
5001 | ARCHIT | SHARMA | DELHI |
Muestra solo ocho empleados cuyos nombres de ciudad coinciden con la lista de parámetros de expresión del operador IN.
Ejemplo 2: Escriba una consulta para obtener la identificación del empleado, el nombre, el apellido, el salario y el Departamento de la tabla del empleado donde el salario incluye una de las listas 50500, 55500 y 65500 en la tabla.
SELECT EMPLOYEEID, FIRST_NAME, LAST_NAME, SALARY, DEPARTMENT FROM EMPLOYEES WHERE SALARY IN (50500, 55500, 65500);
En la declaración anterior, recuperamos la identificación del empleado, el nombre y apellido, el salario y el Departamento de la tabla del empleado donde el salario incluye uno de los salarios 50500, 55500 y 65500. Todos estos salarios se pasan como un parámetro en el Operador IN como valores. La tabla irá para todos aquellos registros cuyos salarios de los empleados coincidan con la lista de salarios del parámetro del operador IN.
Salida:
ID DE EMPLEADO | FIRST_NAME | APELLIDO | SALARIO | DEPARTAMENTO |
1001 | VAIBHAVI | MISHRA | 65500 | ORACULO |
1003 | NIKHIL | VANI | 50500 | FMW |
2001 | PRACHI | SHARMA | 55500 | ORACULO |
2002 | BHAVESH | JAÍN | 65500 | FMW |
3001 | PRANOTI | SHENDE | 55500 | JAVA |
3002 | ANUJA | WANRE | 50500 | FMW |
5001 | ARCHIT | SHARMA | 55500 | PRUEBA |
Muestra solo siete empleados cuyo salario coincide con la lista de parámetros de expresión del operador IN.
Ejemplo 3: Escriba una consulta para obtener la identificación del empleado, el nombre, el apellido, el salario y la ciudad de los empleados donde el salario del empleado es superior a 60000 o la ciudad del empleado incluye una de las listas de ciudades como 'Mumbai', 'Pune' y 'Jaipur' en la tabla.
SELECT EMPLOYEEID, FIRST_NAME, LAST_NAME, SALARY, CITY FROM EMPLOYEES WHERE SALARY > 60000 OR CITY IN ('PUNE', 'MUMBAI', 'JAIPUR');
En la declaración anterior, hemos obtenido la identificación del empleado, el nombre, el apellido, el salario y la ciudad de la tabla de empleados donde el salario del empleado es superior a 60000 o la ciudad del empleado incluye una de esta lista de ciudades es 'Mumbai', 'Pune', ' Jaipur'. La primera parte de la cláusula WHERE de la sentencia SELECT es SALARIO> 60000 y la última parte es CIUDAD EN ('PUNE', 'MUMBAI', 'JAIPUR'), Como usamos el operador OR, el resultado será de ambas condiciones.
Salida:
ID DE EMPLEADO | FIRST_NAME | APELLIDO | SALARIO | CIUDAD |
1001 | VAIBHAVI | MISHRA | 65500 | PUNE |
1003 | NIKHIL | VANI | 50500 | JAIPUR |
2002 | BHAVESH | JAÍN | 65500 | PUNE |
2003 | RUCHIKA | JAÍN | 50000 | BOMBAY |
3001 | PRANOTI | SHENDE | 55500 | PUNE |
3002 | ANUJA | WANRE | 50500 | JAIPUR |
3003 | DEEPAM | JAUHARI | 58500 | BOMBAY |
4001 | RAJESH | GOUD | 60500 | BOMBAY |
Muestra solo ocho registros de la tabla cuyo salario es superior a 60000 o los nombres de ciudades coinciden con la lista de parámetros de expresión del operador IN.
Ejemplo 4: Escriba una consulta para recuperar la identificación del empleado, el salario, la ciudad y el departamento de la tabla de empleados donde el departamento del empleado incluye una de las listas 'Oracle', 'FMW' y también la ciudad incluye una de las listas 'Delhi', 'Noida', 'Puno'.
SELECT EMPLOYEEID, SALARY, CITY, DEPARTMENT FROM EMPLOYEES WHERE DEPARTMENT IN ('ORACLE', 'FMW') AND CITY IN ('PUNE', 'NOIDA', 'DELHI');
Hemos recuperado la identificación del empleado, el salario, la ciudad y el departamento de la tabla del empleado en la declaración anterior. El departamento de empleados incluye una de las listas de departamentos pasadas al parámetro del operador IN. La ciudad del empleado incluye una de las listas de ciudades pasadas al parámetro del operador IN, y el resultado incluye solo los detalles de los empleados que coinciden con ambas condiciones.
Salida:
ID DE EMPLEADO | SALARIO | CIUDAD | DEPARTAMENTO |
1001 | 65500 | PUNE | ORACULO |
2002 | 65500 | PUNE | FMW |
4003 | 60000 | DELHI | ORACULO |
Solo hay tres registros de la tabla Empleados cuya ciudad de empleado incluye Pune, Delhi y Noida, y Departamento incluye Oracle, FMW.
Ejemplo 5: Escriba una consulta para obtener la identificación del empleado, el nombre, el apellido, el salario, la ciudad y el departamento de la tabla del empleado donde el salario del empleado es superior a 60000 y la ciudad incluye una de las listas en Pune, Jaipur, Mumbai o Departamento incluye uno de los las listas son Java, Pruebas, C#.
SELECT EMPLOYEEID, FIRST_NAME, LAST_NAME, SALARY, CITY, DEPARTMENT FROM EMPLOYEES WHERE SALARY > 60000 AND CITY IN ('PUNE', 'MUMBAI', 'JAIPUR') OR DEPARTMENT IN ('JAVA', 'TESTING', 'C#');
En la declaración anterior, hemos utilizado el operador OR, el operador AND y el operador IN múltiple con la declaración SELECT para obtener la identificación del empleado, el nombre, el apellido, el salario, la ciudad y el departamento de la tabla del empleado. La consulta SELECCIONAR primero obtiene los registros de empleados donde el salario es> 60000 Y la ciudad EN ('Pune', 'Mumbai', Jaipur), solo esos empleados. Ambas condiciones son verdaderas, y al final Departamento IN ('Java', 'Pruebas', 'C#'), esta consulta buscará en el resultado de la primera fase que esos registros de empleados que recuperamos tienen el Departamento uno de las listas que pasamos al IN y también ir al resto de los registros en la tabla si se encuentra algún registro con el nombre del departamento que pasamos al parámetro del operador IN, ese registro se agregará al resultado.
Salida:
ID DE EMPLEADO | FIRST_NAME | APELLIDO | SALARIO | CIUDAD | DEPARTAMENTO |
1001 | VAIBHAVI | MISHRA | 65500 | PUNE | ORACULO |
1002 | VAIBHAV | SHARMA | 60000 | NOIDA | C# |
2002 | BHAVESH | JAÍN | 65500 | PUNE | FMW |
2003 | RUCHIKA | JAÍN | 50000 | BOMBAY | C# |
3001 | PRANOTI | SHENDE | 55500 | PUNE | JAVA |
3003 | DEEPAM | JAUHARI | 58500 | BOMBAY | JAVA |
4001 | RAJESH | GOUD | 60500 | BOMBAY | PRUEBA |
4002 | ASHWINI | BAGHAT | 54500 | NOIDA | JAVA |
5001 | ARCHIT | SHARMA | 55500 | DELHI | PRUEBA |
Solo hay 9 registros de empleados cuyo salario es superior a 60000. Ciudad incluye una de las listas que pasamos como parámetro al operador Ciudad IN o Departamento incluye una de las listas que pasamos al operador Departamento IN.
Ejemplo 6: Escriba una subconsulta para obtener los detalles de los empleados de la tabla de empleados donde managerid es mayor que 2 de la tabla de administradores.
SELECT * FROM EMPLOYEES WHERE MANAGERID IN (SELECT MANAGERID FROM MANAGER WHERE MANAGERID > 2);
En la instrucción anterior, se ejecutará la primera subconsulta SELECT MANAGERID FROM MANAGER WHERE MANAGERID> 2; la salida será la identificación del gerente que es mayor que 2 pases como parámetro en la cláusula WHERE de la consulta principal, y la salida final será de la tabla de empleados donde la identificación del empleado-gerente incluye una de las listas que es la salida de la subconsulta.
Salida:
ID DE EMPLEADO | FIRST_NAME | APELLIDO | SALARIO | CIUDAD | DEPARTAMENTO | ID DE ADMINISTRADOR |
3001 | PRANOTI | SHENDE | 55500 | PUNE | JAVA | 3 |
3003 | DEEPAM | JAUHARI | 58500 | BOMBAY | JAVA | 3 |
4002 | ASHWINI | BAGHAT | 54500 | NOIDA | JAVA | 3 |
4001 | RAJESH | GOUD | 60500 | BOMBAY | PRUEBA | 4 |
5001 | ARCHIT | SHARMA | 55500 | DELHI | PRUEBA | 4 |
1002 | VAIBHAV | SHARMA | 60000 | NOIDA | C# | 5 |
2003 | RUCHIKA | JAÍN | 50000 | BOMBAY | C# | 5 |
Solo hay siete registros de la tabla de empleados cuya identificación de administrador es mayor que 2.
Ejemplo 7: Escriba una subconsulta para obtener los detalles del empleado donde el departamento del gerente incluye una de las listas, Oracle, Java y FMW.
SELECT * FROM EMPLOYEES WHERE MANAGERID IN (SELECT MANAGERID FROM MANAGER WHERE MANAGER_DEPARTMENT IN ('ORACLE', 'FMW', 'JAVA'));
En la declaración anterior, primero obtenemos la identificación del administrador de la tabla del administrador donde el departamento del administrador incluye una de las listas:Oracle, FMW, Java. Luego, la consulta principal obtendrá los detalles del empleado del resultado de la subconsulta.
Salida:
ID DE EMPLEADO | FIRST_NAME | APELLIDO | SALARIO | CIUDAD | DEPARTAMENTO | ID DE ADMINISTRADOR |
1001 | VAIBHAVI | MISHRA | 65500 | PUNE | ORACULO | 1 |
2001 | PRACHI | SHARMA | 55500 | CHANDIGARH | ORACULO | 1 |
4003 | RUCHIKA | AGARWAL | 60000 | DELHI | ORACULO | 1 |
1003 | NIKHIL | VANI | 50500 | JAIPUR | FMW | 2 |
2002 | BHAVESH | JAÍN | 65500 | PUNE | FMW | 2 |
3002 | ANUJA | WANRE | 50500 | JAIPUR | FMW | 2 |
3001 | PRANOTI | SHENDE | 55500 | PUNE | JAVA | 3 |
3003 | DEEPAM | JAUHARI | 58500 | BOMBAY | JAVA | 3 |
4002 | ASHWINI | BAGHAT | 54500 | NOIDA | JAVA | 3 |
Ejemplo 8: Escriba una consulta para obtener la identificación del empleado, el nombre, el apellido, el salario, la ciudad de la tabla del empleado donde el salario está entre 50000 y 65000 o la ciudad incluye una de las listas que es Pune, Jaipur y Mumbai.
SELECT EMPLOYEEID, FIRST_NAME, LAST_NAME, SALARY, CITY FROM EMPLOYEES WHERE SALARY BETWEEN 50000 AND 65000 OR CITY IN ('PUNE', 'MUMBAI', 'JAIPUR');
En la declaración anterior, hemos obtenido la identificación del empleado, el nombre, el apellido, el salario y la ciudad de la tabla del empleado donde el salario del empleado entre 50000 y 65000 o la ciudad incluye una de las listas es Pune, Mumbai, Jaipur.
Salida:
ID DE EMPLEADO | FIRST_NAME | APELLIDO | SALARIO | CIUDAD |
1001 | VAIBHAVI | MISHRA | 65500 | PUNE |
1002 | VAIBHAV | SHARMA | 60000 | NOIDA |
1003 | NIKHIL | VANI | 50500 | JAIPUR |
2001 | PRACHI | SHARMA | 55500 | CHANDIGARH |
2002 | BHAVESH | JAÍN | 65500 | PUNE |
2003 | RUCHIKA | JAÍN | 50000 | BOMBAY |
3001 | PRANOTI | SHENDE | 55500 | PUNE |
3002 | ANUJA | WANRE | 50500 | JAIPUR |
3003 | DEEPAM | JAUHARI | 58500 | BOMBAY |
4001 | RAJESH | GOUD | 60500 | BOMBAY |
4002 | ASHWINI | BAGHAT | 54500 | NOIDA |
4003 | RUCHIKA | AGARWAL | 60000 | DELHI |
5001 | ARCHIT | SHARMA | 55500 | DELHI |