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

SQL VÆLG IN

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


  1. Hvad er det længst mulige verdensomspændende telefonnummer, jeg bør overveje i SQL varchar(længde) for telefon

  2. ListAGG i SQLSERVER

  3. PostgreSQL matchende interval mellem start- og sluttidspunkt i forhold til tidsstempel

  4. Hvordan laver man synkronisering med lokal database og parser?