Database
 sql >> Base de données >  >> RDS >> Database

SÉLECTION SQL DANS

SQL SELECT IN est un opérateur logique dans Structured Query Language. Il est utilisé dans les requêtes SQL pour réduire l'utilisation de plusieurs opérateurs 'OU'. s

L'opérateur IN dans SQL permet également de tester facilement la condition correspond à n'importe quelle valeur dans une liste de valeurs. Cela réduit le nombre d'opérateurs OU dans les requêtes SQL.

Syntaxe de l'opérateur IN en SQL :

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

Syntaxe de sous-requête de l'opérateur IN en SQL :

SELECT COLUMNNAME FROM TABLENAME WHERE COLUMNNAME IN (SELECT STATEMENT); 

Dans la syntaxe ci-dessus, nous pouvons également utiliser l'opérateur IN avec la sous-requête.

Comprenons le concept SQL SELECT IN à l'aide d'exemples.

Considérez les tables suivantes qui ont les enregistrements suivants :

Tableau 1 :Employés

ID EMPLOYEE FIRST_NAME LAST_NAME SALAIRE VILLE DÉPARTEMENT MANAGERID
1001 VAIBHAVI MISHRA 65500 PUNE ORACLE 1
1002 VAIBHAV SHARMA 60000 NOÏDA C# 5
1003 NIKHIL VANI 50500 JAIPUR FMW 2
2001 PRACHI SHARMA 55500 CHANDIGAR ORACLE 1
2002 BHAVESH JAIN 65500 PUNE FMW 2
2003 RUCHIKA JAIN 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 TEST 4
4002 ASHWINI BAGHAT 54500 NOÏDA JAVA 3
4003 RUCHIKA AGARWAL 60000 DELHI ORACLE 1
5001 ARCHIT SHARMA 55500 DELHI TEST 4

Tableau 2 :Gestionnaire

ID gestionnaire nom_du_responsable manager_department
1 Snehdeep Kaur ORACLE
2 Kirti Kirtane FMW
3 Abhishek Manich JAVA
4 Anupam Mishra TEST
5 Akash Kadam C#

Exemple 1 : Écrivez une requête pour récupérer l'identifiant, le prénom, le nom et la ville de l'employé à partir de la table de l'employé où City inclut l'une des listes Mumbai, Pune et Delhi dans la table.

SELECT EMPLOYEEID, FIRST_NAME, LAST_NAME, CITY FROM EMPLOYEES WHERE CITY IN ('MUMBAI', 'PUNE', 'DELHI');

Dans la déclaration ci-dessus, nous avons récupéré l'identifiant, le prénom et le nom de l'employé et la ville de la table de l'employé, où City inclut l'un des noms de ville, Mumbai, Pune et Delhi. Tous ces noms de villes sont passés en paramètre dans l'opérateur IN en tant que valeurs. Le tableau ira pour tous les enregistrements dont les villes des employés correspondent à la liste des villes du paramètre de l'opérateur IN.

Sortie :

ID EMPLOYEE FIRST_NAME LAST_NAME VILLE
1001 VAIBHAVI MISHRA PUNE
2002 BHAVESH JAIN PUNE
2003 RUCHIKA JAIN Bombay
3001 PRANOTI SHENDE PUNE
3003 DEEPAM JAUHARI Bombay
4001 RAJESH GOUD Bombay
4003 RUCHIKA AGARWAL DELHI
5001 ARCHIT SHARMA DELHI

Il n'affiche que huit employés dont les noms de ville correspondent à la liste des paramètres d'expression de l'opérateur IN.

Exemple 2 : Écrivez une requête pour récupérer l'identifiant, le prénom, le nom, le salaire et le service de l'employé à partir de la table de l'employé où le salaire comprend l'une des listes est 50500, 55500 et 65500 dans la table.

SELECT EMPLOYEEID, FIRST_NAME, LAST_NAME, SALARY, DEPARTMENT FROM EMPLOYEES WHERE SALARY IN (50500, 55500, 65500);

Dans la déclaration ci-dessus, nous avons récupéré l'identifiant de l'employé, le prénom et le nom, le salaire et le département de la table de l'employé où le salaire comprend l'un des salaires 50500, 55500 et 65500. Tous ces salaires sont passés en paramètre dans le Opérateur IN comme valeurs. Le tableau ira pour tous les enregistrements dont les salaires des employés correspondent à la liste des salaires des paramètres de l'opérateur IN.

Sortie :

ID EMPLOYEE FIRST_NAME LAST_NAME SALAIRE DÉPARTEMENT
1001 VAIBHAVI MISHRA 65500 ORACLE
1003 NIKHIL VANI 50500 FMW
2001 PRACHI SHARMA 55500 ORACLE
2002 BHAVESH JAIN 65500 FMW
3001 PRANOTI SHENDE 55500 JAVA
3002 ANUJA WANRE 50500 FMW
5001 ARCHIT SHARMA 55500 TEST

Il ne montre que sept employés dont le salaire correspond à la liste des paramètres d'expression de l'opérateur IN.

Exemple 3 : Écrivez une requête pour récupérer l'identifiant, le prénom, le nom, le salaire et la ville de l'employé des employés dont le salaire est supérieur à 60 000 ou dont la ville de l'employé comprend l'une des listes de villes 'Mumbai', 'Pune' et 'Jaipur' dans le tableau.

SELECT EMPLOYEEID, FIRST_NAME, LAST_NAME, SALARY, CITY FROM EMPLOYEES WHERE SALARY > 60000 OR CITY IN ('PUNE', 'MUMBAI', 'JAIPUR');

Dans la déclaration ci-dessus, nous avons récupéré l'identifiant, le prénom, le nom, le salaire et la ville de l'employé à partir de la table des employés où le salaire de l'employé est supérieur à 60000 ou la ville de l'employé comprend l'une de ces listes de villes est 'Mumbai', 'Pune', ' Jaïpur'. La première partie de la clause WHERE de l'instruction SELECT est SALARY> 60000 et la dernière partie est CITY IN ('PUNE', 'MUMBAI', 'JAIPUR'), comme nous avons utilisé l'opérateur OR, le résultat proviendra des deux conditions.

Sortie :

ID EMPLOYEE FIRST_NAME LAST_NAME SALAIRE VILLE
1001 VAIBHAVI MISHRA 65500 PUNE
1003 NIKHIL VANI 50500 JAIPUR
2002 BHAVESH JAIN 65500 PUNE
2003 RUCHIKA JAIN 50000 Bombay
3001 PRANOTI SHENDE 55500 PUNE
3002 ANUJA WANRE 50500 JAIPUR
3003 DEEPAM JAUHARI 58500 Bombay
4001 RAJESH GOUD 60500 Bombay

Il affiche seulement huit enregistrements de la table dont le salaire est supérieur à 60 000 ou les noms de ville correspondent à la liste des paramètres d'expression de l'opérateur IN.

Exemple 4 : Écrivez une requête pour récupérer l'identifiant de l'employé, le salaire, la ville et le service à partir de la table des employés où le service des employés comprend l'une des listes est « Oracle », « FMW » et également la ville comprend l'une des listes est « Delhi », « Noida », 'Puné'.

SELECT EMPLOYEEID, SALARY, CITY, DEPARTMENT FROM EMPLOYEES WHERE DEPARTMENT IN ('ORACLE', 'FMW') AND CITY IN ('PUNE', 'NOIDA', 'DELHI');

Nous avons récupéré l'identifiant, le salaire, la ville et le service de l'employé à partir du tableau de l'employé dans la déclaration ci-dessus. Le service de l'employé comprend l'une des listes de services transmises au paramètre de l'opérateur IN. La ville de l'employé inclut l'une des listes de villes transmises au paramètre de l'opérateur IN, et le résultat inclut uniquement les détails de l'employé qui correspondent aux deux conditions.

Sortie :

ID EMPLOYEE SALAIRE VILLE DÉPARTEMENT
1001 65500 PUNE ORACLE
2002 65500 PUNE FMW
4003 60000 DELHI ORACLE

Il n'y a que trois enregistrements de la table Employés dont la ville des employés inclut Pune, Delhi et Noida, et le Département inclut Oracle, FMW.

Exemple 5 : Écrivez une requête pour récupérer l'identifiant, le prénom, le nom, le salaire, la ville et le service de l'employé à partir de la table de l'employé où le salaire de l'employé est supérieur à 60000 et où la ville inclut l'une des listes à Pune, Jaipur, Mumbai ou le département inclut l'un des listes est 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#');

Dans l'instruction ci-dessus, nous avons utilisé l'opérateur OR, l'opérateur AND et plusieurs opérateurs IN avec l'instruction SELECT pour récupérer l'identifiant, le prénom, le nom, le salaire, la ville et le service de l'employé dans la table de l'employé. La requête SELECT récupère d'abord les enregistrements d'employés où salaire> 60000 AND City IN ("Pune", "Mumbai", Jaipur), uniquement ces employés. Les deux conditions sont vraies, et à la fin Department IN ('Java', 'Testing', 'C#'), cette requête recherchera dans la première phase le résultat que les enregistrements d'employés que nous avons récupérés ayant Department l'une des listes que nous avons transmises au Opérateur IN et accédez également au reste des enregistrements de la table si des enregistrements trouvés ayant le nom du département que nous avons passés au paramètre de l'opérateur IN, cet enregistrement sera ajouté au résultat.

Sortie :

ID EMPLOYEE FIRST_NAME LAST_NAME SALAIRE VILLE DÉPARTEMENT
1001 VAIBHAVI MISHRA 65500 PUNE ORACLE
1002 VAIBHAV SHARMA 60000 NOÏDA C#
2002 BHAVESH JAIN 65500 PUNE FMW
2003 RUCHIKA JAIN 50000 Bombay C#
3001 PRANOTI SHENDE 55500 PUNE JAVA
3003 DEEPAM JAUHARI 58500 Bombay JAVA
4001 RAJESH GOUD 60500 Bombay TEST
4002 ASHWINI BAGHAT 54500 NOÏDA JAVA
5001 ARCHIT SHARMA 55500 DELHI TEST

Il n'y a que 9 enregistrements d'employés dont le salaire est supérieur à 60 000. City inclut l'une des listes que nous avons transmises en tant que paramètre à l'opérateur City IN ou Department inclut l'une des listes que nous avons transmises à l'opérateur Department IN.

Exemple 6 : Écrivez une sous-requête pour récupérer les détails des employés de la table des employés où managerid est supérieur à 2 de la table des managers.

SELECT * FROM EMPLOYEES WHERE MANAGERID IN (SELECT MANAGERID FROM MANAGER WHERE MANAGERID > 2); 

Dans l'instruction ci-dessus, la première sous-requête sera exécutée SELECT MANAGERID FROM MANAGER WHERE MANAGERID> 2 ; la sortie sera l'identifiant du responsable qui est supérieur à 2 passages en tant que paramètre dans la clause WHERE de la requête principale, et la sortie finale proviendra de la table des employés où l'identifiant du responsable de l'employé inclut l'une des listes qui est la sortie de la sous-requête.

Sortie :

ID EMPLOYEE FIRST_NAME LAST_NAME SALAIRE VILLE DÉPARTEMENT MANAGERID
3001 PRANOTI SHENDE 55500 PUNE JAVA 3
3003 DEEPAM JAUHARI 58500 Bombay JAVA 3
4002 ASHWINI BAGHAT 54500 NOÏDA JAVA 3
4001 RAJESH GOUD 60500 Bombay TEST 4
5001 ARCHIT SHARMA 55500 DELHI TEST 4
1002 VAIBHAV SHARMA 60000 NOÏDA C# 5
2003 RUCHIKA JAIN 50000 Bombay C# 5

Il n'y a que sept enregistrements de la table des employés dont l'ID de responsable est supérieur à 2.

Exemple 7 : Rédigez une sous-requête pour récupérer les détails de l'employé lorsque le service responsable inclut l'une des listes est un oracle, java et FMW.

SELECT * FROM EMPLOYEES WHERE MANAGERID IN (SELECT MANAGERID FROM MANAGER WHERE MANAGER_DEPARTMENT IN ('ORACLE', 'FMW', 'JAVA'));

Dans l'instruction ci-dessus, nous récupérons d'abord l'identifiant du responsable dans la table des responsables où le département responsable inclut l'une des listes Oracle, FMW, Java. Ensuite, la requête principale récupérera les détails de l'employé à partir de la sortie de la sous-requête.

Sortie :

ID EMPLOYEE FIRST_NAME LAST_NAME SALAIRE VILLE DÉPARTEMENT MANAGERID
1001 VAIBHAVI MISHRA 65500 PUNE ORACLE 1
2001 PRACHI SHARMA 55500 CHANDIGAR ORACLE 1
4003 RUCHIKA AGARWAL 60000 DELHI ORACLE 1
1003 NIKHIL VANI 50500 JAIPUR FMW 2
2002 BHAVESH JAIN 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 NOÏDA JAVA 3

Exemple 8 : Écrivez une requête pour récupérer l'identifiant, le prénom, le nom, le salaire de l'employé, la ville de la table de l'employé où le salaire est compris entre 50000 et 65000 ou la ville inclut l'une des listes est Pune, Jaipur et Mumbai.

SELECT EMPLOYEEID, FIRST_NAME, LAST_NAME, SALARY, CITY FROM EMPLOYEES WHERE SALARY BETWEEN 50000 AND 65000 OR CITY IN ('PUNE', 'MUMBAI', 'JAIPUR');

Dans la déclaration ci-dessus, nous avons récupéré l'identifiant, le prénom, le nom, le salaire et la ville de l'employé dans la table de l'employé où le salaire de l'employé est compris entre 50000 et 65000 ou la ville comprend l'une des listes est Pune, Mumbai, Jaipur.

Sortie :

ID EMPLOYEE FIRST_NAME LAST_NAME SALAIRE VILLE
1001 VAIBHAVI MISHRA 65500 PUNE
1002 VAIBHAV SHARMA 60000 NOÏDA
1003 NIKHIL VANI 50500 JAIPUR
2001 PRACHI SHARMA 55500 CHANDIGAR
2002 BHAVESH JAIN 65500 PUNE
2003 RUCHIKA JAIN 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 NOÏDA
4003 RUCHIKA AGARWAL 60000 DELHI
5001 ARCHIT SHARMA 55500 DELHI