SQL SELECT IN är en logisk operator i Structured Query Language. Den används i SQL-frågor för att minska användningen av flera "ELLER"-operatorer. s
IN-operatorn i SQL gör det också enkelt att testa att villkoret matchar alla värden i en värdelista. Det minskar antalet ELLER-operatorer i SQL-frågor.
Syntax för IN-operator i SQL:
SELECT COLUMNNAME FROM TABLENAME WHERE COLUMNNAME IN (VALUE1, VALUE2);
Subquery Syntax för IN-operator i SQL:
SELECT COLUMNNAME FROM TABLENAME WHERE COLUMNNAME IN (SELECT STATEMENT);
I ovanstående syntax kan vi också använda IN-operator med underfråga.
Låt oss förstå SQL SELECT IN-konceptet med hjälp av exempel.
Tänk på följande tabeller som har följande poster:
Tabell 1:Anställda
ANSTÄLLDA ID | FIRST_NAME | LAST_NAME | LÖN | STAD | AVDELNING | 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 | TESTER | 4 |
4002 | ASHWINI | BAGHAT | 54500 | NOIDA | JAVA | 3 |
4003 | RUCHIKA | AGARWAL | 60 000 | DELHI | ORACLE | 1 |
5001 | ARCHIT | SHARMA | 55500 | DELHI | TESTER | 4 |
Tabell 2:Manager
Managerid | manager_name | manager_department |
1 | Snehdeep Kaur | ORACLE |
2 | Kirti Kirtane | FMW |
3 | Abhishek Manish | JAVA |
4 | Anupam Mishra | TESTER |
5 | Akash Kadam | C# |
Exempel 1: Skriv en fråga för att hämta anställd-id, förnamn, efternamn och stad från den anställdes tabell där City inkluderar en av listorna är Mumbai, Pune och Delhi i tabellen.
SELECT EMPLOYEEID, FIRST_NAME, LAST_NAME, CITY FROM EMPLOYEES WHERE CITY IN ('MUMBAI', 'PUNE', 'DELHI');
I ovanstående uttalande har vi hämtat medarbetar-id, för- och efternamn samt stad från den anställdes tabell, där City inkluderar ett av stadsnamnen, Mumbai, Pune och Delhi. Alla dessa stadsnamn skickas som en parameter i IN-operatorn som värden. Tabellen kommer att gå för alla de poster vars anställdas städer matchar IN-operatörsparameterns stadslista.
Utdata:
ANSTÄLLDA ID | FIRST_NAME | LAST_NAME | STAD |
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 visar endast åtta anställda vars stadsnamn matchar IN-operatörens uttrycksparameterlista.
Exempel 2: Skriv en fråga för att hämta anställd-id, förnamn, efternamn, lön och avdelning från den anställdes tabell där lönen inkluderar en av listorna är 50500, 55500 och 65500 i tabellen.
SELECT EMPLOYEEID, FIRST_NAME, LAST_NAME, SALARY, DEPARTMENT FROM EMPLOYEES WHERE SALARY IN (50500, 55500, 65500);
I ovanstående uttalande har vi hämtat anställd-id, för- och efternamn, lön och avdelning från den anställdes tabell där lönen inkluderar en av lönerna är 50500, 55500 och 65500. Alla dessa löner skickas som en parameter i IN-operatör som värden. Tabellen kommer att gå för alla de poster vars anställdas löner matchar IN-operatörsparameterns lönelista.
Utdata:
ANSTÄLLDA ID | FIRST_NAME | LAST_NAME | LÖN | AVDELNING |
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 | TESTER |
Den visar endast sju anställda vars lön matchar IN-operatörens uttrycksparameterlista.
Exempel 3: Skriv en fråga för att hämta anställd-id, förnamn, efternamn, lön och stad från anställda där anställdas lön är större än 60 000 eller där anställds stad inkluderar en av stadslistorna är 'Mumbai', 'Pune' och 'Jaipur' i tabellen.
SELECT EMPLOYEEID, FIRST_NAME, LAST_NAME, SALARY, CITY FROM EMPLOYEES WHERE SALARY > 60000 OR CITY IN ('PUNE', 'MUMBAI', 'JAIPUR');
I ovanstående uttalande har vi hämtat medarbetar-id, förnamn, efternamn, lön och stad från anställdas tabell där anställdas lön är större än 60 000 eller den anställdes stad inkluderar en av de här stadslistan är 'Mumbai', 'Pune', ' Jaipur'. SELECT-satsen WHERE-satsens första del är SALARY> 60000 och sista delen är CITY IN ('PUNE', 'MUMBAI', 'JAIPUR'), När vi använde OR-operatorn kommer resultatet att vara från båda villkoren.
Utdata:
ANSTÄLLDA ID | FIRST_NAME | LAST_NAME | LÖN | STAD |
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 visar endast åtta poster från tabellen vars lön är större än 60 000 eller stadnamnen matchar IN-operatorns uttrycksparameterlista.
Exempel 4: Skriv en fråga för att hämta medarbetar-id, lön, stad och avdelning från personaltabellen där personalavdelningen inkluderar en av listorna är 'Oracle', 'FMW' och även City inkluderar en av listorna är 'Delhi', 'Noida', 'Pune'.
SELECT EMPLOYEEID, SALARY, CITY, DEPARTMENT FROM EMPLOYEES WHERE DEPARTMENT IN ('ORACLE', 'FMW') AND CITY IN ('PUNE', 'NOIDA', 'DELHI');
Vi har hämtat anställd-id, lön, stad och avdelning från den anställdes tabell i ovanstående uttalande. Personalavdelningen inkluderar en av avdelningslistorna som skickas till IN-operatörsparametern. Anställds stad inkluderar en av stadslistorna som skickas till IN-operatörsparametern, och resultatet inkluderar endast de anställda detaljer som matchar båda villkoren.
Utdata:
ANSTÄLLDA ID | LÖN | STAD | AVDELNING |
1001 | 65500 | PUNE | ORACLE |
2002 | 65500 | PUNE | FMW |
4003 | 60 000 | DELHI | ORACLE |
Det finns bara tre poster från tabellen Anställda vars anställdas stad inkluderar Pune, Delhi och Noida, och avdelningen inkluderar Oracle, FMW.
Exempel 5: Skriv en fråga för att hämta anställd-id, förnamn, efternamn, lön, stad och avdelning från den anställdes tabell där anställdas lön är större än 60 000 och City inkluderar en av listorna i Pune, Jaipur, Mumbai eller avdelningen innehåller en av lists är 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 ovanstående uttalande har vi använt OR-operator, AND-operator och multipla IN-operator med SELECT-satsen för att hämta anställd-id, förnamn, efternamn, lön, stad och avdelning från den anställdes tabell. SELECT-frågan hämtar först de anställdas poster där lön> 60000 OCH City IN ('Pune', 'Mumbai', Jaipur), endast de anställda. Båda villkoren är sanna, och i slutet av avdelning IN ('Java', 'Testing', 'C#'), kommer denna fråga att söka i den första fasen resultat att de anställda poster som vi hämtade med avdelning en av listorna som vi skickade till IN-operatorn och gå även till resten av posterna i tabellen om några poster hittas med avdelningsnamn som vi skickade till IN-operatorparametern som posten kommer att läggas till i resultatet.
Utdata:
ANSTÄLLDA ID | FIRST_NAME | LAST_NAME | LÖN | STAD | AVDELNING |
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 | TESTER |
4002 | ASHWINI | BAGHAT | 54500 | NOIDA | JAVA |
5001 | ARCHIT | SHARMA | 55500 | DELHI | TESTER |
Det finns bara 9 poster över anställda vars lön är högre än 60 000. Stad inkluderar en av listorna vi skickade som en parameter till City IN-operatören eller Department inkluderar en av listorna vi skickade till Department IN-operatören.
Exempel 6: Skriv en underfråga för att hämta anställdsinformation från anställdtabellen där chefs-id är större än 2 från chefstabellen.
SELECT * FROM EMPLOYEES WHERE MANAGERID IN (SELECT MANAGERID FROM MANAGER WHERE MANAGERID > 2);
I satsen ovan kommer den första underfrågan att köras SELECT MANAGERID FROM MANAGER WHERE MANAGERID> 2; utdata kommer att vara chefs-id som är större än 2 pass som en parameter i huvudfrågan WHERE-satsen, och den slutliga utdatan kommer att vara från anställdas tabell där anställd-chefs-id inkluderar en av listorna som är utdata från underfrågan.
Utdata:
ANSTÄLLDA ID | FIRST_NAME | LAST_NAME | LÖN | STAD | AVDELNING | 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 | TESTER | 4 |
5001 | ARCHIT | SHARMA | 55500 | DELHI | TESTER | 4 |
1002 | VAIBHAV | SHARMA | 60 000 | NOIDA | C# | 5 |
2003 | RUCHIKA | JAIN | 50 000 | MUMBAI | C# | 5 |
Det finns bara sju poster från den anställdes bord vars chefs-id är större än 2.
Exempel 7: Skriv en underfråga för att hämta medarbetarens uppgifter där chefsavdelningen inkluderar en av listorna är ett orakel, java och FMW.
SELECT * FROM EMPLOYEES WHERE MANAGERID IN (SELECT MANAGERID FROM MANAGER WHERE MANAGER_DEPARTMENT IN ('ORACLE', 'FMW', 'JAVA'));
I ovanstående uttalande hämtar vi först chefs-id från chefstabellen där chefsavdelningen inkluderar en av listorna är Oracle, FMW, Java. Sedan kommer huvudfrågan att hämta den anställdes uppgifter från utdata från underfrågan.
Utdata:
ANSTÄLLDA ID | FIRST_NAME | LAST_NAME | LÖN | STAD | AVDELNING | 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 |
Exempel 8: Skriv en fråga för att hämta medarbetar-id, förnamn, efternamn, lön, stad från den anställdes tabell där lönen är mellan 50 000 och 65 000 eller City inkluderar en av listorna är Pune, Jaipur och Mumbai.
SELECT EMPLOYEEID, FIRST_NAME, LAST_NAME, SALARY, CITY FROM EMPLOYEES WHERE SALARY BETWEEN 50000 AND 65000 OR CITY IN ('PUNE', 'MUMBAI', 'JAIPUR');
I ovanstående uttalande har vi hämtat anställd-id, förnamn, efternamn, lön och stad från den anställdes tabell där anställdas lön mellan 50 000 och 65 000 eller staden inkluderar en av listorna är Pune, Mumbai, Jaipur.
Utdata:
ANSTÄLLDA ID | FIRST_NAME | LAST_NAME | LÖN | STAD |
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 |