SQL SELECT IN er en logisk operator i Structured Query Language. Det bruges i SQL-forespørgsler for at reducere brugen af flere 'ELLER'-operatorer. s
IN-operatoren i SQL gør det også nemt at teste, at betingelsen matcher enhver værdi i en liste over værdier. Det reducerer antallet af OR-operatorer i SQL-forespørgsler.
Syntaks for IN-operator i SQL:
SELECT COLUMNNAME FROM TABLENAME WHERE COLUMNNAME IN (VALUE1, VALUE2);
Underforespørgselssyntaks for IN-operator i SQL:
SELECT COLUMNNAME FROM TABLENAME WHERE COLUMNNAME IN (SELECT STATEMENT);
I ovenstående syntaks kan vi også bruge IN-operator med underforespørgsel.
Lad os forstå SQL SELECT IN-konceptet ved hjælp af eksempler.
Overvej følgende tabeller, som har følgende poster:
Tabel 1:Medarbejdere
EMPLOYEEID | FIRST_NAME | LAST_NAME | LØN | BY | AFDELING | MANAGERID |
1001 | VAIBHAVI | MISHRA | 65500 | PUNE | ORACLE | 1 |
1002 | VAIBHAV | SHARMA | 60.000 | NOIDA | C# | 5 |
1003 | NIKHIL | VANI | 50500 | JAIPUR | FMW | 2 |
2001 | PRACHI | 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 | WANRE | 50500 | JAIPUR | FMW | 2 |
3003 | DEEPAM | JAUHARI | 58500 | MUMBAI | JAVA | 3 |
4001 | RAJESH | GOUD | 60500 | MUMBAI | TEST | 4 |
4002 | ASHWINI | BAGHAT | 54500 | NOIDA | JAVA | 3 |
4003 | RUCHIKA | AGARWAL | 60.000 | DELHI | ORACLE | 1 |
5001 | ARCHIT | SHARMA | 55500 | DELHI | TEST | 4 |
Tabel 2:Manager
Managerid | manager_navn | manager_afdeling |
1 | Snehdeep Kaur | ORACLE |
2 | Kirti Kirtane | FMW |
3 | Abhishek Manish | JAVA |
4 | Anupam Mishra | TEST |
5 | Akash Kadam | C# |
Eksempel 1: Skriv en forespørgsel for at hente medarbejder-id, fornavn, efternavn og by fra medarbejderens tabel, hvor byen inkluderer en af listerne er Mumbai, Pune og Delhi i tabellen.
SELECT EMPLOYEEID, FIRST_NAME, LAST_NAME, CITY FROM EMPLOYEES WHERE CITY IN ('MUMBAI', 'PUNE', 'DELHI');
I ovenstående erklæring har vi hentet medarbejder-id, for- og efternavn samt by fra medarbejderens tabel, hvor City inkluderer et af bynavnene, Mumbai, Pune og Delhi. Alle disse bynavne sendes som en parameter i IN-operatoren som værdier. Tabellen vil gå til alle de poster, hvis ansattes byer matcher IN-operatørens parameter byliste.
Output:
EMPLOYEEID | FIRST_NAME | LAST_NAME | BY |
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 |
Den viser kun otte medarbejdere, hvis bynavne matcher IN-operatørens udtryksparameterliste.
Eksempel 2: Skriv en forespørgsel for at hente medarbejder-id, fornavn, efternavn, løn og afdeling fra medarbejderens tabel, hvor lønnen inkluderer en af listerne er 50500, 55500 og 65500 i tabellen.
SELECT EMPLOYEEID, FIRST_NAME, LAST_NAME, SALARY, DEPARTMENT FROM EMPLOYEES WHERE SALARY IN (50500, 55500, 65500);
I ovenstående opgørelse har vi hentet medarbejder-id, for- og efternavn, løn og afdeling fra medarbejderens tabel, hvor lønnen inkluderer en af lønningerne er 50500, 55500 og 65500. Alle disse lønninger overføres som en parameter i IN-operatør som værdier. Tabellen vil gå til alle de poster, hvis ansattes løn svarer til IN-operatørens parameter lønliste.
Output:
EMPLOYEEID | FIRST_NAME | LAST_NAME | LØN | AFDELING |
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 |
Den viser kun syv medarbejdere, hvis løn matcher IN-operatørens udtryksparameterliste.
Eksempel 3: Skriv en forespørgsel for at hente medarbejder-id, fornavn, efternavn, løn og by fra medarbejdere, hvor medarbejderløn er større end 60.000 eller medarbejderby inkluderer en af bylisterne er 'Mumbai', 'Pune' og 'Jaipur' i tabellen.
SELECT EMPLOYEEID, FIRST_NAME, LAST_NAME, SALARY, CITY FROM EMPLOYEES WHERE SALARY > 60000 OR CITY IN ('PUNE', 'MUMBAI', 'JAIPUR');
I ovenstående erklæring har vi hentet medarbejder-id, fornavn, efternavn, løn og by fra medarbejdertabel, hvor medarbejdernes løn er større end 60.000, eller hvor medarbejderbyen inkluderer en af disse bylister er 'Mumbai', 'Pune', ' Jaipur'. SELECT-sætningen WHERE-klausulens første del er SALARY> 60000 og sidste del er CITY IN ('PUNE', 'MUMBAI', 'JAIPUR'), da vi brugte OR-operator, vil resultatet være fra begge betingelser.
Output:
EMPLOYEEID | FIRST_NAME | LAST_NAME | LØN | BY |
1001 | VAIBHAVI | MISHRA | 65500 | PUNE |
1003 | NIKHIL | VANI | 50500 | JAIPUR |
2002 | BHAVESH | JAIN | 65500 | PUNE |
2003 | RUCHIKA | JAIN | 50.000 | MUMBAI |
3001 | PRANOTI | SHENDE | 55500 | PUNE |
3002 | ANUJA | WANRE | 50500 | JAIPUR |
3003 | DEEPAM | JAUHARI | 58500 | MUMBAI |
4001 | RAJESH | GOUD | 60500 | MUMBAI |
Den viser kun otte poster fra tabellen, hvis løn er større end 60.000, eller bynavne matcher parameterlisten for IN-operatorudtryk.
Eksempel 4: Skriv en forespørgsel for at hente medarbejder-id, løn, by og afdeling fra medarbejdertabel, hvor medarbejderafdelingen inkluderer en af listerne er 'Oracle', 'FMW' og også City inkluderer en af listerne er 'Delhi', 'Noida', 'Pune'.
SELECT EMPLOYEEID, SALARY, CITY, DEPARTMENT FROM EMPLOYEES WHERE DEPARTMENT IN ('ORACLE', 'FMW') AND CITY IN ('PUNE', 'NOIDA', 'DELHI');
Vi har hentet medarbejder-id, løn, by og afdeling fra medarbejderens tabel i ovenstående opgørelse. Medarbejderafdelingen inkluderer en af afdelingslisterne, der er overført til IN-operatørparameteren. Medarbejderby inkluderer en af de bylister, der er overført til IN-operatørparameteren, og resultatet inkluderer kun de medarbejderoplysninger, der matcher begge betingelser.
Output:
EMPLOYEEID | LØN | BY | AFDELING |
1001 | 65500 | PUNE | ORACLE |
2002 | 65500 | PUNE | FMW |
4003 | 60.000 | DELHI | ORACLE |
Der er kun tre poster fra tabellen Medarbejdere, hvis medarbejderby omfatter Pune, Delhi og Noida, og afdelingen omfatter Oracle, FMW.
Eksempel 5: Skriv en forespørgsel for at hente medarbejder-id, fornavn, efternavn, løn, by og afdeling fra medarbejderens tabel, hvor medarbejderlønnen er større end 60.000 og City inkluderer en af listerne i Pune, Jaipur, Mumbai eller afdelingen inkluderer en af de lister er 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#');
I ovenstående erklæring har vi brugt OR-operator, AND-operator og multiple IN-operator med SELECT-sætningen til at hente medarbejder-id, fornavn, efternavn, løn, by og afdeling fra medarbejderens tabel. SELECT-forespørgslen henter først medarbejderposterne, hvor løn> 60000 OG City IN ('Pune', 'Mumbai', Jaipur), kun de ansatte. Begge betingelser er sande, og i slutningen af afdeling IN ('Java', 'Testing', 'C#'), vil denne forespørgsel søge i den første fase resulterer i, at de medarbejderregistreringer, vi hentede, med afdeling en af de lister, vi sendte til IN-operator og gå også efter resten af posterne i tabellen, hvis nogen poster fundet med afdelingsnavn, vi har videregivet til IN-operatorparameteren, vil denne post blive tilføjet til resultatet.
Output:
EMPLOYEEID | FIRST_NAME | LAST_NAME | LØN | BY | AFDELING |
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 | TEST |
4002 | ASHWINI | BAGHAT | 54500 | NOIDA | JAVA |
5001 | ARCHIT | SHARMA | 55500 | DELHI | TEST |
Der er kun 9 fortegnelser over medarbejdere, hvis løn er større end 60.000. By inkluderer en af de lister, vi har videregivet som en parameter til by-IN-operatøren, eller afdeling inkluderer en af de lister, vi har givet til operatøren af afdeling IN.
Eksempel 6: Skriv en underforespørgsel for at hente medarbejderoplysninger fra medarbejdertabellen, hvor managerid er større end 2 fra ledertabellen.
SELECT * FROM EMPLOYEES WHERE MANAGERID IN (SELECT MANAGERID FROM MANAGER WHERE MANAGERID > 2);
I ovenstående sætning vil den første underforespørgsel blive udført SELECT MANAGERID FROM MANAGER WHERE MANAGERID> 2; outputtet vil være leder-id, som er større end 2 pass som en parameter i hovedforespørgslen WHERE-klausulen, og det endelige output vil være fra medarbejdertabel, hvor medarbejder-leder-id inkluderer en af listerne, som er output fra underforespørgsel.
Output:
EMPLOYEEID | FIRST_NAME | LAST_NAME | LØN | BY | AFDELING | MANAGERID |
3001 | PRANOTI | SHENDE | 55500 | PUNE | JAVA | 3 |
3003 | DEEPAM | JAUHARI | 58500 | MUMBAI | JAVA | 3 |
4002 | ASHWINI | BAGHAT | 54500 | NOIDA | JAVA | 3 |
4001 | RAJESH | GOUD | 60500 | MUMBAI | TEST | 4 |
5001 | ARCHIT | SHARMA | 55500 | DELHI | TEST | 4 |
1002 | VAIBHAV | SHARMA | 60.000 | NOIDA | C# | 5 |
2003 | RUCHIKA | JAIN | 50.000 | MUMBAI | C# | 5 |
Der er kun syv poster fra medarbejderens tabel, hvis leder-id er større end 2.
Eksempel 7: Skriv en underforespørgsel for at hente medarbejderens detaljer, hvor lederafdelingen inkluderer en af listerne er et orakel, java og FMW.
SELECT * FROM EMPLOYEES WHERE MANAGERID IN (SELECT MANAGERID FROM MANAGER WHERE MANAGER_DEPARTMENT IN ('ORACLE', 'FMW', 'JAVA'));
I ovenstående erklæring henter vi først manager-id'et fra managertabellen, hvor managerafdelingen inkluderer en af listerne er Oracle, FMW, Java. Derefter vil hovedforespørgslen hente medarbejderens detaljer fra outputtet af underforespørgslen.
Output:
EMPLOYEEID | FIRST_NAME | LAST_NAME | LØN | BY | AFDELING | MANAGERID |
1001 | VAIBHAVI | MISHRA | 65500 | PUNE | ORACLE | 1 |
2001 | PRACHI | SHARMA | 55500 | CHANDIGARH | ORACLE | 1 |
4003 | RUCHIKA | AGARWAL | 60.000 | 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 | MUMBAI | JAVA | 3 |
4002 | ASHWINI | BAGHAT | 54500 | NOIDA | JAVA | 3 |
Eksempel 8: Skriv en forespørgsel for at hente medarbejder-id, fornavn, efternavn, løn, by fra medarbejderens tabel, hvor lønnen er mellem 50.000 og 65.000, eller hvor byen inkluderer en af listerne er Pune, Jaipur og Mumbai.
SELECT EMPLOYEEID, FIRST_NAME, LAST_NAME, SALARY, CITY FROM EMPLOYEES WHERE SALARY BETWEEN 50000 AND 65000 OR CITY IN ('PUNE', 'MUMBAI', 'JAIPUR');
I ovenstående erklæring har vi hentet medarbejder-id, fornavn, efternavn, løn og by fra medarbejderens tabel, hvor medarbejderløn mellem 50.000 og 65.000 eller byen inkluderer en af listerne er Pune, Mumbai, Jaipur.
Output:
EMPLOYEEID | FIRST_NAME | LAST_NAME | LØN | BY |
1001 | VAIBHAVI | MISHRA | 65500 | PUNE |
1002 | VAIBHAV | SHARMA | 60.000 | NOIDA |
1003 | NIKHIL | VANI | 50500 | JAIPUR |
2001 | PRACHI | SHARMA | 55500 | CHANDIGARH |
2002 | BHAVESH | JAIN | 65500 | PUNE |
2003 | RUCHIKA | JAIN | 50.000 | MUMBAI |
3001 | PRANOTI | SHENDE | 55500 | PUNE |
3002 | ANUJA | WANRE | 50500 | JAIPUR |
3003 | DEEPAM | JAUHARI | 58500 | MUMBAI |
4001 | RAJESH | GOUD | 60500 | MUMBAI |
4002 | ASHWINI | BAGHAT | 54500 | NOIDA |
4003 | RUCHIKA | AGARWAL | 60.000 | DELHI |
5001 | ARCHIT | SHARMA | 55500 | DELHI |