SQL SELECT IN è un operatore logico in Structured Query Language. Viene utilizzato nelle query SQL per ridurre l'uso di più operatori "OR". s
L'operatore IN in SQL consente anche di testare facilmente la condizione che corrisponda a qualsiasi valore in un elenco di valori. Riduce il numero di operatori OR nelle query SQL.
Sintassi dell'operatore IN in SQL:
SELECT COLUMNNAME FROM TABLENAME WHERE COLUMNNAME IN (VALUE1, VALUE2);
Sintassi della sottoquery dell'operatore IN in SQL:
SELECT COLUMNNAME FROM TABLENAME WHERE COLUMNNAME IN (SELECT STATEMENT);
Nella sintassi sopra, possiamo usare anche l'operatore IN con la sottoquery.
Comprendiamo il concetto di SQL SELECT IN con l'aiuto di esempi.
Considera le seguenti tabelle che hanno i seguenti record:
Tabella 1:Dipendenti
ID DIPENDENTE | FIRST_NAME | COGNOME | STIPENDIO | CITTÀ | REPARTO | RIDESTORE |
1001 | VAIBHAVI | MISHRA | 65500 | PUNE | ORACLE | 1 |
1002 | VAIBHAV | SHARMA | 60000 | NOIDA | C# | 5 |
1003 | NICHIL | VANI | 50500 | JAIPUR | FM | 2 |
2001 | PRACHI | SHARMA | 55500 | CHANDIGARH | ORACLE | 1 |
2002 | BHAVESH | JAIN | 65500 | PUNE | FM | 2 |
2003 | RUCHIKA | JAIN | 50000 | MUMBAI | C# | 5 |
3001 | PRANOTI | SHENDE | 55500 | PUNE | JAVA | 3 |
3002 | ANUJA | WANRE | 50500 | JAIPUR | FM | 2 |
3003 | DEEPAM | JAUHARI | 58500 | MUMBAI | JAVA | 3 |
4001 | RAJESH | GOUD | 60500 | MUMBAI | PROVA | 4 |
4002 | ASHWINI | BAGAGLIO | 54500 | NOIDA | JAVA | 3 |
4003 | RUCHIKA | AGARWAL | 60000 | DELHI | ORACLE | 1 |
5001 | ARCHIT | SHARMA | 55500 | DELHI | PROVA | 4 |
Tabella 2:Gestore
ID gestore | nome_gestore | dipartimento_direttore |
1 | Snehdeep Kaur | ORACLE |
2 | Kirti Kirtane | FM |
3 | Abhishek Manish | JAVA |
4 | Anupam Mishra | PROVA |
5 | Akash Kadam | C# |
Esempio 1: Scrivi una query per recuperare l'ID dipendente, il nome, il cognome e la città dalla tabella del dipendente in cui Città include uno degli elenchi è Mumbai, Pune e Delhi nella tabella.
SELECT EMPLOYEEID, FIRST_NAME, LAST_NAME, CITY FROM EMPLOYEES WHERE CITY IN ('MUMBAI', 'PUNE', 'DELHI');
Nella dichiarazione precedente, abbiamo recuperato l'ID dipendente, il nome e il cognome e la città dalla tabella del dipendente, dove Città include uno dei nomi delle città, Mumbai, Pune e Delhi. Tutti questi nomi di città vengono passati come parametri nell'operatore IN come valori. La tabella andrà per tutti quei record le cui città dei dipendenti corrispondono all'elenco delle città dei parametri dell'operatore IN.
Risultato:
ID DIPENDENTE | FIRST_NAME | COGNOME | CITTÀ |
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 | DELHI |
5001 | ARCHIT | SHARMA | DELHI |
Mostra solo otto dipendenti i cui nomi di città corrispondono all'elenco dei parametri dell'espressione dell'operatore IN.
Esempio 2: Scrivi una query per recuperare l'ID dipendente, il nome, il cognome, lo stipendio e il dipartimento dalla tabella del dipendente in cui lo stipendio include uno degli elenchi che è 50500, 55500 e 65500 nella tabella.
SELECT EMPLOYEEID, FIRST_NAME, LAST_NAME, SALARY, DEPARTMENT FROM EMPLOYEES WHERE SALARY IN (50500, 55500, 65500);
Nella dichiarazione precedente, abbiamo recuperato l'ID dipendente, il nome e il cognome, lo stipendio e il dipartimento dalla tabella del dipendente in cui lo stipendio include uno degli stipendi sono 50500, 55500 e 65500. Tutti questi stipendi vengono passati come parametro nella Operatore IN come valori. La tabella andrà per tutti quei record i cui stipendi dei dipendenti corrispondono alla lista salari del parametro dell'operatore IN.
Risultato:
ID DIPENDENTE | FIRST_NAME | COGNOME | STIPENDIO | REPARTO |
1001 | VAIBHAVI | MISHRA | 65500 | ORACLE |
1003 | NICHIL | VANI | 50500 | FM |
2001 | PRACHI | SHARMA | 55500 | ORACLE |
2002 | BHAVESH | JAIN | 65500 | FM |
3001 | PRANOTI | SHENDE | 55500 | JAVA |
3002 | ANUJA | WANRE | 50500 | FM |
5001 | ARCHIT | SHARMA | 55500 | PROVA |
Mostra solo sette dipendenti il cui stipendio corrisponde all'elenco dei parametri dell'espressione dell'operatore IN.
Esempio 3: Scrivi una query per recuperare l'ID dipendente, il nome, il cognome, lo stipendio e la città dai dipendenti in cui lo stipendio del dipendente è maggiore di 60000 o la città del dipendente include uno degli elenchi di città è "Mumbai", "Pune" e "Jaipur" nella tabella.
SELECT EMPLOYEEID, FIRST_NAME, LAST_NAME, SALARY, CITY FROM EMPLOYEES WHERE SALARY > 60000 OR CITY IN ('PUNE', 'MUMBAI', 'JAIPUR');
Nella dichiarazione sopra, abbiamo recuperato l'ID dipendente, il nome, il cognome, lo stipendio e la città dalla tabella dei dipendenti in cui lo stipendio del dipendente è maggiore di 60000 o la città del dipendente include una di questa lista di città è 'Mumbai', 'Pune', ' Jaipur'. La prima parte della clausola WHERE dell'istruzione SELECT è SALARY> 60000 e l'ultima parte è CITY IN ("PUNE", 'MUMBAI', 'JAIPUR'), poiché abbiamo usato l'operatore OR, il risultato sarà da entrambe le condizioni.
Risultato:
ID DIPENDENTE | FIRST_NAME | COGNOME | STIPENDIO | CITTÀ |
1001 | VAIBHAVI | MISHRA | 65500 | PUNE |
1003 | NICHIL | VANI | 50500 | JAIPUR |
2002 | BHAVESH | JAIN | 65500 | PUNE |
2003 | RUCHIKA | JAIN | 50000 | MUMBAI |
3001 | PRANOTI | SHENDE | 55500 | PUNE |
3002 | ANUJA | WANRE | 50500 | JAIPUR |
3003 | DEEPAM | JAUHARI | 58500 | MUMBAI |
4001 | RAJESH | GOUD | 60500 | MUMBAI |
Mostra solo otto record della tabella il cui stipendio è maggiore di 60000 o i nomi delle città corrispondono all'elenco dei parametri dell'espressione dell'operatore IN.
Esempio 4: Scrivi una query per recuperare l'ID dipendente, lo stipendio, la città e il dipartimento dalla tabella dei dipendenti in cui il dipartimento dei dipendenti include uno degli elenchi è "Oracle", "FMW" e anche la città include uno degli elenchi è "Delhi", "Noida", 'Puno'.
SELECT EMPLOYEEID, SALARY, CITY, DEPARTMENT FROM EMPLOYEES WHERE DEPARTMENT IN ('ORACLE', 'FMW') AND CITY IN ('PUNE', 'NOIDA', 'DELHI');
Abbiamo recuperato l'ID dipendente, lo stipendio, la città e il dipartimento dalla tabella del dipendente nella dichiarazione sopra. Il reparto dipendenti include uno degli elenchi di reparto passati al parametro operatore IN. La città del dipendente include uno degli elenchi di città passati al parametro dell'operatore IN e il risultato include solo i dettagli del dipendente che soddisfano entrambe le condizioni.
Risultato:
ID DIPENDENTE | STIPENDIO | CITTÀ | REPARTO |
1001 | 65500 | PUNE | ORACLE |
2002 | 65500 | PUNE | FM |
4003 | 60000 | DELHI | ORACLE |
Ci sono solo tre record dalla tabella Dipendenti la cui città dipendente include Pune, Delhi e Noida e il dipartimento include Oracle, FMW.
Esempio 5: Scrivi una query per recuperare l'ID dipendente, il nome, il cognome, lo stipendio, la città e il dipartimento dalla tabella del dipendente in cui lo stipendio del dipendente è maggiore di 60000 e la città include uno degli elenchi di Pune, Jaipur, Mumbai o il dipartimento include uno dei list è 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#');
Nella dichiarazione precedente, abbiamo utilizzato l'operatore OR, l'operatore AND e l'operatore IN multiplo con l'istruzione SELECT per recuperare l'ID dipendente, il nome, il cognome, lo stipendio, la città e il dipartimento dalla tabella del dipendente. La query SELECT recupera prima i record dei dipendenti in cui stipendio> 60000 AND City IN ("Pune", "Mumbai", Jaipur), solo quei dipendenti. Entrambe le condizioni sono vere e alla fine Department IN ("Java", "Testing", "C#"), questa query cercherà nella prima fase il risultato che i record dei dipendenti che abbiamo recuperato hanno il Dipartimento uno degli elenchi che abbiamo passato al IN e vai anche per il resto dei record nella tabella se qualsiasi record trovato con il nome del dipartimento che abbiamo passato al parametro dell'operatore IN quel record verrà aggiunto al risultato.
Risultato:
ID DIPENDENTE | FIRST_NAME | COGNOME | STIPENDIO | CITTÀ | REPARTO |
1001 | VAIBHAVI | MISHRA | 65500 | PUNE | ORACLE |
1002 | VAIBHAV | SHARMA | 60000 | NOIDA | C# |
2002 | BHAVESH | JAIN | 65500 | PUNE | FM |
2003 | RUCHIKA | JAIN | 50000 | MUMBAI | C# |
3001 | PRANOTI | SHENDE | 55500 | PUNE | JAVA |
3003 | DEEPAM | JAUHARI | 58500 | MUMBAI | JAVA |
4001 | RAJESH | GOUD | 60500 | MUMBAI | PROVA |
4002 | ASHWINI | BAGAGLIO | 54500 | NOIDA | JAVA |
5001 | ARCHIT | SHARMA | 55500 | DELHI | PROVA |
Ci sono solo 9 record di dipendenti il cui stipendio è superiore a 60000. Città include una delle liste che abbiamo passato come parametro all'operatore City IN o Department include una delle liste che abbiamo passato all'operatore Department IN.
Esempio 6: Scrivi una sottoquery per recuperare i dettagli dei dipendenti dalla tabella dei dipendenti in cui managerid è maggiore di 2 dalla tabella dei manager.
SELECT * FROM EMPLOYEES WHERE MANAGERID IN (SELECT MANAGERID FROM MANAGER WHERE MANAGERID > 2);
Nell'istruzione precedente, verrà eseguita la prima sottoquery SELECT MANAGERID FROM MANAGER WHERE MANAGERID> 2; l'output sarà l'id manager che è maggiore di 2 pass come parametro nella clausola WHERE della query principale e l'output finale sarà dalla tabella dipendenti in cui l'id manager-impiegato include uno degli elenchi che è l'output della sottoquery.
Risultato:
ID DIPENDENTE | FIRST_NAME | COGNOME | STIPENDIO | CITTÀ | REPARTO | RIDESTORE |
3001 | PRANOTI | SHENDE | 55500 | PUNE | JAVA | 3 |
3003 | DEEPAM | JAUHARI | 58500 | MUMBAI | JAVA | 3 |
4002 | ASHWINI | BAGAGLIO | 54500 | NOIDA | JAVA | 3 |
4001 | RAJESH | GOUD | 60500 | MUMBAI | PROVA | 4 |
5001 | ARCHIT | SHARMA | 55500 | DELHI | PROVA | 4 |
1002 | VAIBHAV | SHARMA | 60000 | NOIDA | C# | 5 |
2003 | RUCHIKA | JAIN | 50000 | MUMBAI | C# | 5 |
Ci sono solo sette record dalla tabella del dipendente il cui ID manager è maggiore di 2.
Esempio 7: Scrivi una sottoquery per recuperare i dettagli del dipendente in cui il dipartimento manager include uno degli elenchi è un oracle, java e FMW.
SELECT * FROM EMPLOYEES WHERE MANAGERID IN (SELECT MANAGERID FROM MANAGER WHERE MANAGER_DEPARTMENT IN ('ORACLE', 'FMW', 'JAVA'));
Nella dichiarazione precedente, prendiamo prima l'id manager dalla tabella manager in cui il dipartimento manager include uno degli elenchi è Oracle, FMW, Java. Quindi la query principale recupererà i dettagli del dipendente dall'output della sottoquery.
Risultato:
ID DIPENDENTE | FIRST_NAME | COGNOME | STIPENDIO | CITTÀ | REPARTO | RIDESTORE |
1001 | VAIBHAVI | MISHRA | 65500 | PUNE | ORACLE | 1 |
2001 | PRACHI | SHARMA | 55500 | CHANDIGARH | ORACLE | 1 |
4003 | RUCHIKA | AGARWAL | 60000 | DELHI | ORACLE | 1 |
1003 | NICHIL | VANI | 50500 | JAIPUR | FM | 2 |
2002 | BHAVESH | JAIN | 65500 | PUNE | FM | 2 |
3002 | ANUJA | WANRE | 50500 | JAIPUR | FM | 2 |
3001 | PRANOTI | SHENDE | 55500 | PUNE | JAVA | 3 |
3003 | DEEPAM | JAUHARI | 58500 | MUMBAI | JAVA | 3 |
4002 | ASHWINI | BAGAGLIO | 54500 | NOIDA | JAVA | 3 |
Esempio 8: Scrivi una query per recuperare ID dipendente, nome, cognome, stipendio, città dalla tabella del dipendente in cui lo stipendio è compreso tra 50000 e 65000 o città include uno degli elenchi è 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');
Nella dichiarazione di cui sopra, abbiamo recuperato l'ID dipendente, il nome, il cognome, lo stipendio e la città dalla tabella del dipendente in cui lo stipendio del dipendente compreso tra 50000 e 65000 o la città include uno degli elenchi è Pune, Mumbai, Jaipur.
Risultato:
ID DIPENDENTE | FIRST_NAME | COGNOME | STIPENDIO | CITTÀ |
1001 | VAIBHAVI | MISHRA | 65500 | PUNE |
1002 | VAIBHAV | SHARMA | 60000 | NOIDA |
1003 | NICHIL | VANI | 50500 | JAIPUR |
2001 | PRACHI | SHARMA | 55500 | CHANDIGARH |
2002 | BHAVESH | JAIN | 65500 | PUNE |
2003 | RUCHIKA | JAIN | 50000 | MUMBAI |
3001 | PRANOTI | SHENDE | 55500 | PUNE |
3002 | ANUJA | WANRE | 50500 | JAIPUR |
3003 | DEEPAM | JAUHARI | 58500 | MUMBAI |
4001 | RAJESH | GOUD | 60500 | MUMBAI |
4002 | ASHWINI | BAGAGLIO | 54500 | NOIDA |
4003 | RUCHIKA | AGARWAL | 60000 | DELHI |
5001 | ARCHIT | SHARMA | 55500 | DELHI |