sql >> Base de Datos >  >> RDS >> Database

SQL SELECCIONAR EN

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