sql >> Databasteknik >  >> RDS >> Database

SQL VÄLJ IN

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


  1. Fixa "ERROR 1136 (21S01):Kolumnantal matchar inte värderäkning på rad 1" när du infogar data i MariaDB

  2. MayBeSQL kommer till Microsoft Access!

  3. mySQL-fel 1040:För många anslutningar

  4. SQL OVER()-satsen - när och varför är den användbar?