sql >> Database >  >> RDS >> Database

SQL SELECTEER IN

SQL SELECT IN is een logische operator in Structured Query Language. Het wordt gebruikt in SQL-query's om het gebruik van meerdere 'OF'-operators te verminderen. s

De IN-operator in SQL maakt het ook mogelijk om eenvoudig te testen of de voorwaarde overeenkomt met elke waarde in een lijst met waarden. Het vermindert het aantal OR-operators in SQL-query's.

Syntaxis van IN-operator in SQL:

SELECT COLUMNNAME FROM TABLENAME WHERE COLUMNNAME IN (VALUE1, VALUE2);

Subquerysyntaxis van IN-operator in SQL:

SELECT COLUMNNAME FROM TABLENAME WHERE COLUMNNAME IN (SELECT STATEMENT); 

In de bovenstaande syntaxis kunnen we de IN-operator ook met subquery's gebruiken.

Laten we het SQL SELECT IN-concept begrijpen aan de hand van voorbeelden.

Beschouw de volgende tabellen die de volgende records hebben:

Tabel 1:Medewerkers

WERKNEMER-ID FIRST_NAME LAST_NAME SALARIS STAD AFDELING MANAGERID
1001 VAIBHAVI MISHRA 65500 PUNE ORAKLE 1
1002 VAIBHAV SHARMA 60000 NOIDA C# 5
1003 NIKHIL VANI 50500 JAIPUR FMW 2
2001 PRACHI SHARMA 55500 CHANDIGARH ORAKLE 1
2002 BHAVESH JAIN 65500 PUNE FMW 2
2003 RUCHIKA JAIN 50000 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 TESTEN 4
4002 ASHWINI BAGHAT 54500 NOIDA JAVA 3
4003 RUCHIKA AGARWAL 60000 DELHI ORAKLE 1
5001 ARCHIT SHARMA 55500 DELHI TESTEN 4

Tabel 2:Beheerder

Managerid manager_name manager_department
1 Snehdeep Kaur ORAKLE
2 Kirti Kirtane FMW
3 Abhishek Manish JAVA
4 Anupam Mishra TESTEN
5 Akash Kadam C#

Voorbeeld 1: Schrijf een zoekopdracht om het werknemers-ID, de voornaam, de achternaam en de stad op te halen uit de tabel van de werknemer, waarbij de stad een van de lijsten Mumbai, Pune en Delhi in de tabel bevat.

SELECT EMPLOYEEID, FIRST_NAME, LAST_NAME, CITY FROM EMPLOYEES WHERE CITY IN ('MUMBAI', 'PUNE', 'DELHI');

In de bovenstaande verklaring hebben we het werknemers-ID, de voor- en achternaam en de stad opgehaald uit de tabel van de werknemer, waar stad een van de plaatsnamen Mumbai, Pune en Delhi bevat. Al deze namen van steden worden als een parameter in de IN-operator doorgegeven als waarden. De tabel geldt voor al die records waarvan de steden van de werknemers overeenkomen met de lijst met steden van de IN-operatorparameter.

Uitvoer:

WERKNEMER-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

Het toont slechts acht werknemers wiens plaatsnamen overeenkomen met de parameterlijst van de IN-operatorexpressie.

Voorbeeld 2: Schrijf een zoekopdracht om het werknemers-ID, de voornaam, de achternaam, het salaris en de afdeling op te halen uit de tabel van de werknemer waarbij het salaris een van de lijsten 50500, 55500 en 65500 in de tabel bevat.

SELECT EMPLOYEEID, FIRST_NAME, LAST_NAME, SALARY, DEPARTMENT FROM EMPLOYEES WHERE SALARY IN (50500, 55500, 65500);

In de bovenstaande verklaring hebben we het werknemers-ID, de voor- en achternaam, het salaris en de afdeling opgehaald uit de tabel van de werknemer waar het salaris een van de salarissen 50500, 55500 en 65500 omvat. Al deze salarissen worden doorgegeven als een parameter in de IN-operator als waarden. De tabel geldt voor al die records waarvan de salarissen van de werknemers overeenkomen met de salarislijst van de IN-operatorparameter.

Uitvoer:

WERKNEMER-ID FIRST_NAME LAST_NAME SALARIS AFDELING
1001 VAIBHAVI MISHRA 65500 ORAKLE
1003 NIKHIL VANI 50500 FMW
2001 PRACHI SHARMA 55500 ORAKLE
2002 BHAVESH JAIN 65500 FMW
3001 PRANOTI SHENDE 55500 JAVA
3002 ANUJA WANRE 50500 FMW
5001 ARCHIT SHARMA 55500 TESTEN

Het toont slechts zeven werknemers van wie het salaris overeenkomt met de parameterlijst van de IN-operatorexpressie.

Voorbeeld 3: Schrijf een zoekopdracht om het werknemers-ID, de voornaam, de achternaam, het salaris en de stad op te halen van werknemers waarvan het salaris van de werknemer hoger is dan 60000 of de stad van de werknemer een van de stedenlijsten bevat is 'Mumbai', 'Pune' en 'Jaipur' in de tabel.

SELECT EMPLOYEEID, FIRST_NAME, LAST_NAME, SALARY, CITY FROM EMPLOYEES WHERE SALARY > 60000 OR CITY IN ('PUNE', 'MUMBAI', 'JAIPUR');

In de bovenstaande verklaring hebben we werknemers-ID, voornaam, achternaam, salaris en stad opgehaald uit de werknemerstabel waar het werknemerssalaris groter is dan 60000 of de stad van de werknemer een van deze stedenlijst bevat is 'Mumbai', 'Pune', ' Jaipur'. Het eerste deel van de SELECT-instructie WHERE-clausule is SALARY> 60000 en het laatste deel is CITY IN ('PUNE', 'MUMBAI', 'JAIPUR'), zoals we de OR-operator hebben gebruikt, is het resultaat van beide voorwaarden.

Uitvoer:

WERKNEMER-ID FIRST_NAME LAST_NAME SALARIS STAD
1001 VAIBHAVI MISHRA 65500 PUNE
1003 NIKHIL 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

Er worden slechts acht records uit de tabel weergegeven waarvan het salaris hoger is dan 60000 of waarvan de plaatsnamen overeenkomen met de parameterlijst van de IN-operatorexpressie.

Voorbeeld 4: Schrijf een query om werknemer-ID, salaris, stad en afdeling op te halen uit de werknemerstabel waar de werknemersafdeling een van de lijsten bevat is 'Oracle', 'FMW' en ook de stad bevat een van de lijsten is 'Delhi', 'Noida', 'Pune'.

SELECT EMPLOYEEID, SALARY, CITY, DEPARTMENT FROM EMPLOYEES WHERE DEPARTMENT IN ('ORACLE', 'FMW') AND CITY IN ('PUNE', 'NOIDA', 'DELHI');

We hebben de werknemers-ID, het salaris, de plaats en de afdeling opgehaald uit de tabel van de werknemer in de bovenstaande verklaring. De medewerkersafdeling bevat een van de afdelingslijsten die zijn doorgegeven aan de IN-operatorparameter. De plaats van de werknemer bevat een van de stedenlijsten die zijn doorgegeven aan de parameter IN-operator, en het resultaat bevat alleen de details van de werknemer die aan beide voorwaarden voldoen.

Uitvoer:

WERKNEMER-ID SALARIS STAD AFDELING
1001 65500 PUNE ORAKLE
2002 65500 PUNE FMW
4003 60000 DELHI ORAKLE

Er zijn slechts drie records uit de tabel Werknemers waarvan de werknemersstad Pune, Delhi en Noida omvat, en de afdeling Oracle, FMW.

Voorbeeld 5: Schrijf een zoekopdracht om de werknemers-ID, voornaam, achternaam, salaris, stad en afdeling op te halen uit de tabel van de werknemer waar het salaris van de werknemer hoger is dan 60000 en de stad een van de lijsten in Pune, Jaipur, Mumbai of de afdeling bevat een van de lijsten is 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#');

In de bovenstaande verklaring hebben we OR-operator, AND-operator en meerdere IN-operatoren met de SELECT-instructie gebruikt om het werknemers-ID, de voornaam, de achternaam, het salaris, de stad en de afdeling uit de tabel van de werknemer op te halen. De SELECT-query haalt eerst de werknemersrecords op waar salaris> 60000 AND City IN ('Pune', 'Mumbai', Jaipur), alleen die werknemers. Beide voorwaarden zijn waar, en aan het einde van Afdeling IN ('Java', 'Testing', 'C#'), zal deze zoekopdracht in de eerste fase zoeken naar het resultaat dat de werknemersrecords die we hebben opgehaald met Afdeling een van de lijsten die we hebben doorgegeven aan de IN-operator en ga ook voor de rest van de records in de tabel als er records zijn gevonden met de afdelingsnaam die we hebben doorgegeven aan de IN-operatorparameter die record wordt toegevoegd aan het resultaat.

Uitvoer:

WERKNEMER-ID FIRST_NAME LAST_NAME SALARIS STAD AFDELING
1001 VAIBHAVI MISHRA 65500 PUNE ORAKLE
1002 VAIBHAV SHARMA 60000 NOIDA C#
2002 BHAVESH JAIN 65500 PUNE FMW
2003 RUCHIKA JAIN 50000 MUMBAI C#
3001 PRANOTI SHENDE 55500 PUNE JAVA
3003 DEEPAM JAUHARI 58500 MUMBAI JAVA
4001 RAJESH GOUD 60500 MUMBAI TESTEN
4002 ASHWINI BAGHAT 54500 NOIDA JAVA
5001 ARCHIT SHARMA 55500 DELHI TESTEN

Er zijn slechts 9 records van werknemers met een salaris van meer dan 60000. Stad bevat een van de lijsten die we als parameter hebben doorgegeven aan de City IN-operator of Department bevat een van de lijsten die we hebben doorgegeven aan de Department IN-operator.

Voorbeeld 6: Schrijf een subquery om werknemersgegevens op te halen uit de werknemerstabel waar managerid groter is dan 2 uit de managertabel.

SELECT * FROM EMPLOYEES WHERE MANAGERID IN (SELECT MANAGERID FROM MANAGER WHERE MANAGERID > 2); 

In de bovenstaande instructie wordt de eerste subquery uitgevoerd SELECT MANAGERID FROM MANAGER WHERE MANAGERID> 2; de uitvoer zal manager-ID zijn die groter is dan 2 pass als parameter in de hoofdquery WHERE-clausule, en de uiteindelijke uitvoer zal zijn van de werknemerstabel waar de werknemer-manager-id een van de lijsten bevat die de uitvoer is van de subquery.

Uitvoer:

WERKNEMER-ID FIRST_NAME LAST_NAME SALARIS STAD 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 TESTEN 4
5001 ARCHIT SHARMA 55500 DELHI TESTEN 4
1002 VAIBHAV SHARMA 60000 NOIDA C# 5
2003 RUCHIKA JAIN 50000 MUMBAI C# 5

Er zijn slechts zeven records uit de tabel van de werknemer waarvan de manager-ID groter is dan 2.

Voorbeeld 7: Schrijf een subquery om de details van de werknemer op te halen waarbij de managerafdeling een van de lijsten bevat:orakel, java en FMW.

SELECT * FROM EMPLOYEES WHERE MANAGERID IN (SELECT MANAGERID FROM MANAGER WHERE MANAGER_DEPARTMENT IN ('ORACLE', 'FMW', 'JAVA'));

In de bovenstaande verklaring halen we eerst de manager-ID op uit de managertabel waar de managerafdeling een van de lijsten bevat is Oracle, FMW, Java. Vervolgens haalt de hoofdquery de gegevens van de medewerker op uit de uitvoer van de subquery.

Uitvoer:

WERKNEMER-ID FIRST_NAME LAST_NAME SALARIS STAD AFDELING MANAGERID
1001 VAIBHAVI MISHRA 65500 PUNE ORAKLE 1
2001 PRACHI SHARMA 55500 CHANDIGARH ORAKLE 1
4003 RUCHIKA AGARWAL 60000 DELHI ORAKLE 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

Voorbeeld 8: Schrijf een zoekopdracht om de werknemers-ID, voornaam, achternaam, salaris, stad op te halen uit de tabel van de werknemer met een salaris tussen 50000 en 65000 of stad die een van de lijsten bevat is Pune, Jaipur en Mumbai.

SELECT EMPLOYEEID, FIRST_NAME, LAST_NAME, SALARY, CITY FROM EMPLOYEES WHERE SALARY BETWEEN 50000 AND 65000 OR CITY IN ('PUNE', 'MUMBAI', 'JAIPUR');

In de bovenstaande verklaring hebben we de werknemers-ID, voornaam, achternaam, salaris en stad opgehaald uit de tabel van de werknemer waar het werknemerssalaris tussen 50000 en 65000 of de stad een van de lijsten bevat Pune, Mumbai, Jaipur is.

Uitvoer:

WERKNEMER-ID FIRST_NAME LAST_NAME SALARIS STAD
1001 VAIBHAVI MISHRA 65500 PUNE
1002 VAIBHAV SHARMA 60000 NOIDA
1003 NIKHIL 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 BAGHAT 54500 NOIDA
4003 RUCHIKA AGARWAL 60000 DELHI
5001 ARCHIT SHARMA 55500 DELHI


  1. Overstappen van MySQL 5.7 naar MySQL 8.0 - Wat u moet weten

  2. Groeperen op maand en jaar in MySQL

  3. Wat is SQL Server? (Definitie, versies, edities)

  4. String -> java.util.Date -> java.sql.Date (met tijdstempel)