Database
 sql >> Database >  >> RDS >> Database

SELEZIONA SQL IN

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