Database
 sql >> Base de Dados >  >> RDS >> Database

SQL SELECT IN


SQL SELECT IN é um operador lógico em Structured Query Language. Ele é usado em consultas SQL para reduzir o uso de vários operadores 'OR'. s

O operador IN no SQL também permite testar facilmente se a condição corresponde a qualquer valor em uma lista de valores. Reduz o número de operadores OR em consultas SQL.

Sintaxe do operador IN no SQL:

SELECT COLUMNNAME FROM TABLENAME WHERE COLUMNNAME IN (VALUE1, VALUE2);

Sintaxe da subconsulta do operador IN no SQL:
SELECT COLUMNNAME FROM TABLENAME WHERE COLUMNNAME IN (SELECT STATEMENT); 

Na sintaxe acima, também podemos usar o operador IN com subconsulta.

Vamos entender o conceito SQL SELECT IN com a ajuda de exemplos.

Considere as seguintes tabelas que possuem os seguintes registros:

Tabela 1:Funcionários
EMPLOYEEID FIRST_NAME LAST_NAME SALÁRIO CIDADE DEPARTAMENTO GERENTE
1001 VAIBHAVI MISHRA 65500 PUNE ORACLE 1
1002 VAIBHAV SHARMA 60.000 NOIDA C# 5
1003 NIQUIL VANI 50500 JAIPUR FMW 2
2001 PRAQUI SHARMA 55500 CHANDIGARH ORACLE 1
2002 BHAVESH JAIN 65500 PUNE FMW 2
2003 RUCHIKA JAIN 50.000 MUMBAI C# 5
3001 PRANOTI SHENDE 55500 PUNE JAVA 3
3002 ANUJA QUERER 50500 JAIPUR FMW 2
3003 DEEPAM JAUHARI 58500 MUMBAI JAVA 3
4001 RAJESH GOUD 60500 MUMBAI TESTE 4
4002 ASHWINI BOLSA 54500 NOIDA JAVA 3
4003 RUCHIKA AGARWAL 60.000 DÉLHI ORACLE 1
5001 ARQUIVO SHARMA 55500 DÉLHI TESTE 4

Tabela 2:Gerente
Managerid manager_name manager_department
1 Snehdeep Kaur ORACLE
2 Kirti Kirtane FMW
3 Abhishek Manish JAVA
4 Anupam Mishra TESTE
5 Akash Kadam C#

Exemplo 1: Escreva uma consulta para buscar o ID do funcionário, nome, sobrenome e Cidade da tabela do funcionário, onde Cidade inclui uma das listas Mumbai, Pune e Delhi na tabela.
SELECT EMPLOYEEID, FIRST_NAME, LAST_NAME, CITY FROM EMPLOYEES WHERE CITY IN ('MUMBAI', 'PUNE', 'DELHI');

Na declaração acima, recuperamos o ID do funcionário, nome e sobrenome e Cidade da tabela do funcionário, onde Cidade inclui um dos nomes das cidades, Mumbai, Pune e Delhi. Todos esses nomes de cidades são passados ​​como parâmetro no operador IN como valores. A tabela irá para todos os registros cujas cidades dos funcionários correspondem à lista de cidades do parâmetro do operador IN.

Saída:
EMPLOYEEID FIRST_NAME LAST_NAME CIDADE
1001 VAIBHAVI MISHRA PUNE
2002 BHAVESH JAIN PUNE
2003 RUCHIKA JAIN MUMBAI
3001 PRANOTI SHENDE PUNE
3003 DEEPAM JAUHARI MUMBAI
4001 RAJESH GOUD MUMBAI
4003 RUCHIKA AGARWAL DÉLHI
5001 ARQUIVO SHARMA DÉLHI

Ele mostra apenas oito funcionários cujos nomes de cidades correspondem à lista de parâmetros de expressão do operador IN.

Exemplo 2: Escreva uma consulta para buscar o ID do funcionário, nome, sobrenome, salário e Departamento da tabela do funcionário em que o salário inclui uma das listas 50500, 55500 e 65500 na tabela.
SELECT EMPLOYEEID, FIRST_NAME, LAST_NAME, SALARY, DEPARTMENT FROM EMPLOYEES WHERE SALARY IN (50500, 55500, 65500);

Na instrução acima, recuperamos o ID do funcionário, nome e sobrenome, salário e Departamento da tabela do funcionário onde o salário inclui um dos salários são 50.500, 55.500 e 65.500. Todos esses salários são passados ​​como parâmetro no operador IN como valores. A tabela irá para todos os registros cujos salários dos funcionários correspondem à lista de salários do parâmetro do operador IN.

Saída:
EMPLOYEEID FIRST_NAME LAST_NAME SALÁRIO DEPARTAMENTO
1001 VAIBHAVI MISHRA 65500 ORACLE
1003 NIQUIL VANI 50500 FMW
2001 PRAQUI SHARMA 55500 ORACLE
2002 BHAVESH JAIN 65500 FMW
3001 PRANOTI SHENDE 55500 JAVA
3002 ANUJA QUERER 50500 FMW
5001 ARQUIVO SHARMA 55500 TESTE

Ele mostra apenas sete funcionários cujo salário corresponde à lista de parâmetros de expressão do operador IN.

Exemplo 3: Escreva uma consulta para buscar o ID do funcionário, nome, sobrenome, salário e Cidade de funcionários em que o salário do funcionário é maior que 60.000 ou a cidade do funcionário inclui uma das listas de cidades como 'Mumbai', 'Pune' e 'Jaipur' na mesa.
SELECT EMPLOYEEID, FIRST_NAME, LAST_NAME, SALARY, CITY FROM EMPLOYEES WHERE SALARY > 60000 OR CITY IN ('PUNE', 'MUMBAI', 'JAIPUR');

Na declaração acima, buscamos o ID do funcionário, primeiro nome, sobrenome, salário e Cidade da tabela de funcionários onde o salário do funcionário é maior que 60.000 ou a cidade do funcionário inclui uma desta lista de cidades é 'Mumbai', 'Pune', ' Jaipur'. A primeira parte da cláusula WHERE da instrução SELECT é SALARY> 60000 e a última parte é CITY IN ('PUNE', 'MUMBAI', 'JAIPUR'), como usamos o operador OR o resultado será de ambas as condições.

Saída:
EMPLOYEEID FIRST_NAME LAST_NAME SALÁRIO CIDADE
1001 VAIBHAVI MISHRA 65500 PUNE
1003 NIQUIL VANI 50500 JAIPUR
2002 BHAVESH JAIN 65500 PUNE
2003 RUCHIKA JAIN 50.000 MUMBAI
3001 PRANOTI SHENDE 55500 PUNE
3002 ANUJA QUERER 50500 JAIPUR
3003 DEEPAM JAUHARI 58500 MUMBAI
4001 RAJESH GOUD 60500 MUMBAI

Ele mostra apenas oito registros da tabela cujo salário é maior que 60.000 ou nomes de cidades correspondem à lista de parâmetros da expressão do operador IN.

Exemplo 4: Escreva uma consulta para recuperar o ID do funcionário, Salário, Cidade e Departamento da tabela de funcionários em que o departamento de funcionários inclui uma das listas 'Oracle', 'FMW' e também Cidade inclui uma das listas 'Delhi', 'Noida', 'Punho'.
SELECT EMPLOYEEID, SALARY, CITY, DEPARTMENT FROM EMPLOYEES WHERE DEPARTMENT IN ('ORACLE', 'FMW') AND CITY IN ('PUNE', 'NOIDA', 'DELHI');

Recuperamos o ID do funcionário, salário, Cidade e Departamento da tabela do funcionário na instrução acima. O departamento de funcionários inclui uma das listas de departamentos passadas para o parâmetro do operador IN. A cidade do funcionário inclui uma das listas de cidades passadas para o parâmetro do operador IN e o resultado inclui apenas os detalhes do funcionário que correspondem às duas condições.

Saída:
EMPLOYEEID SALÁRIO CIDADE DEPARTAMENTO
1001 65500 PUNE ORACLE
2002 65500 PUNE FMW
4003 60.000 DÉLHI ORACLE

Existem apenas três registros da tabela Funcionários cuja cidade do funcionário inclui Pune, Delhi e Noida, e Department inclui Oracle, FMW.

Exemplo 5: Escreva uma consulta para buscar ID do funcionário, nome, sobrenome, salário, Cidade e Departamento da tabela do funcionário onde o salário do funcionário é maior que 60.000 e Cidade inclui uma das listas em Pune, Jaipur, Mumbai ou Departamento inclui um dos listas é Java, Testing, 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#');

Na instrução acima, usamos o operador OR, o operador AND e o operador IN múltiplo com a instrução SELECT para buscar o ID do funcionário, nome, sobrenome, salário, cidade e departamento da tabela do funcionário. A consulta SELECT primeiro busca os registros de funcionários em que o salário> 60.000 AND City IN ('Pune', 'Mumbai', Jaipur), somente esses funcionários. Ambas as condições são verdadeiras, e no final Department IN ('Java', 'Testing', 'C#'), esta consulta buscará no resultado da primeira fase que esses registros de funcionários que recuperamos tendo Department uma das listas que passamos para o operador IN e também ir para o restante dos registros da tabela se algum registro for encontrado com nome de departamento que passamos para o parâmetro do operador IN esse registro será adicionado ao resultado.

Saída:
EMPLOYEEID FIRST_NAME LAST_NAME SALÁRIO CIDADE DEPARTAMENTO
1001 VAIBHAVI MISHRA 65500 PUNE ORACLE
1002 VAIBHAV SHARMA 60.000 NOIDA C#
2002 BHAVESH JAIN 65500 PUNE FMW
2003 RUCHIKA JAIN 50.000 MUMBAI C#
3001 PRANOTI SHENDE 55500 PUNE JAVA
3003 DEEPAM JAUHARI 58500 MUMBAI JAVA
4001 RAJESH GOUD 60500 MUMBAI TESTE
4002 ASHWINI BOLSA 54500 NOIDA JAVA
5001 ARQUIVO SHARMA 55500 DÉLHI TESTE

Existem apenas 9 registros de funcionários com salário maior que 60.000. Cidade inclui uma das listas que passamos como parâmetro para o operador Cidade IN ou Departamento inclui uma das listas que passamos para o operador Departamento IN.

Exemplo 6: Escreva uma subconsulta para buscar detalhes de funcionários da tabela de funcionários em que managerid é maior que 2 da tabela de gerentes.
SELECT * FROM EMPLOYEES WHERE MANAGERID IN (SELECT MANAGERID FROM MANAGER WHERE MANAGERID > 2); 

Na instrução acima, a primeira subconsulta será executada SELECT MANAGERID FROM MANAGER WHERE MANAGERID> 2; a saída será o ID do gerente que é maior que 2 passe como parâmetro na cláusula WHERE da consulta principal e a saída final será da tabela de funcionários onde o ID do gerente do funcionário inclui uma das listas que é a saída da subconsulta.

Saída:
EMPLOYEEID FIRST_NAME LAST_NAME SALÁRIO CIDADE DEPARTAMENTO GERENTE
3001 PRANOTI SHENDE 55500 PUNE JAVA 3
3003 DEEPAM JAUHARI 58500 MUMBAI JAVA 3
4002 ASHWINI BOLSA 54500 NOIDA JAVA 3
4001 RAJESH GOUD 60500 MUMBAI TESTE 4
5001 ARQUIVO SHARMA 55500 DÉLHI TESTE 4
1002 VAIBHAV SHARMA 60.000 NOIDA C# 5
2003 RUCHIKA JAIN 50.000 MUMBAI C# 5

Existem apenas sete registros da tabela do funcionário cujo ID de gerente é maior que 2.

Exemplo 7: Escreva uma subconsulta para buscar os detalhes do funcionário onde o departamento do gerente inclui uma das listas como oráculo, java e FMW.
SELECT * FROM EMPLOYEES WHERE MANAGERID IN (SELECT MANAGERID FROM MANAGER WHERE MANAGER_DEPARTMENT IN ('ORACLE', 'FMW', 'JAVA'));

Na instrução acima, primeiro buscamos o ID do gerente da tabela de gerentes onde o departamento de gerentes inclui uma das listas Oracle, FMW, Java. Em seguida, a consulta principal buscará os detalhes do funcionário na saída da subconsulta.

Saída:
EMPLOYEEID FIRST_NAME LAST_NAME SALÁRIO CIDADE DEPARTAMENTO GERENTE
1001 VAIBHAVI MISHRA 65500 PUNE ORACLE 1
2001 PRAQUI SHARMA 55500 CHANDIGARH ORACLE 1
4003 RUCHIKA AGARWAL 60.000 DÉLHI ORACLE 1
1003 NIQUIL VANI 50500 JAIPUR FMW 2
2002 BHAVESH JAIN 65500 PUNE FMW 2
3002 ANUJA QUERER 50500 JAIPUR FMW 2
3001 PRANOTI SHENDE 55500 PUNE JAVA 3
3003 DEEPAM JAUHARI 58500 MUMBAI JAVA 3
4002 ASHWINI BOLSA 54500 NOIDA JAVA 3

Exemplo 8: Escreva uma consulta para buscar ID do funcionário, nome, sobrenome, salário, Cidade da tabela do funcionário onde o salário está entre 50.000 e 65.000 ou Cidade inclui uma das listas Pune, Jaipur e Mumbai.
SELECT EMPLOYEEID, FIRST_NAME, LAST_NAME, SALARY, CITY FROM EMPLOYEES WHERE SALARY BETWEEN 50000 AND 65000 OR CITY IN ('PUNE', 'MUMBAI', 'JAIPUR');

Na declaração acima, buscamos o ID do funcionário, primeiro nome, sobrenome, salário e Cidade da tabela do funcionário onde o salário do funcionário entre 50.000 e 65.000 ou a Cidade inclui uma das listas é Pune, Mumbai, Jaipur.

Saída:
EMPLOYEEID FIRST_NAME LAST_NAME SALÁRIO CIDADE
1001 VAIBHAVI MISHRA 65500 PUNE
1002 VAIBHAV SHARMA 60.000 NOIDA
1003 NIQUIL VANI 50500 JAIPUR
2001 PRAQUI SHARMA 55500 CHANDIGARH
2002 BHAVESH JAIN 65500 PUNE
2003 RUCHIKA JAIN 50.000 MUMBAI
3001 PRANOTI SHENDE 55500 PUNE
3002 ANUJA QUERER 50500 JAIPUR
3003 DEEPAM JAUHARI 58500 MUMBAI
4001 RAJESH GOUD 60500 MUMBAI
4002 ASHWINI BOLSA 54500 NOIDA
4003 RUCHIKA AGARWAL 60.000 DÉLHI
5001 ARQUIVO SHARMA 55500 DÉLHI