SQL SELECT IN ist ein logischer Operator in der Structured Query Language. Es wird in SQL-Abfragen verwendet, um die Verwendung mehrerer 'ODER'-Operatoren zu reduzieren. s
Der IN-Operator in SQL ermöglicht es auch, auf einfache Weise zu testen, ob die Bedingung mit einem beliebigen Wert in einer Werteliste übereinstimmt. Es reduziert die Anzahl der ODER-Operatoren in SQL-Abfragen.
Syntax des IN-Operators in SQL:
SELECT COLUMNNAME FROM TABLENAME WHERE COLUMNNAME IN (VALUE1, VALUE2);
Unterabfragesyntax des IN-Operators in SQL:
SELECT COLUMNNAME FROM TABLENAME WHERE COLUMNNAME IN (SELECT STATEMENT);
In der obigen Syntax können wir den IN-Operator auch mit Unterabfragen verwenden.
Lassen Sie uns das Konzept von SQL SELECT IN anhand von Beispielen verstehen.
Betrachten Sie die folgenden Tabellen mit den folgenden Datensätzen:
Tabelle 1:Mitarbeiter
MITARBEITERID | FIRST_NAME | NACHNAME | GEHALT | STADT | ABTEILUNG | MANAGERID |
1001 | VAIBHAVI | MISHRA | 65500 | PUNE | ORACLE | 1 |
1002 | VAIBHAV | SHARMA | 60000 | NOIDA | C# | 5 |
1003 | NICHIL | VANI | 50500 | JAIPUR | FMW | 2 |
2001 | PRACHI | SHARMA | 55500 | CHANDIGARH | ORACLE | 1 |
2002 | BHAVESH | JAIN | 65500 | PUNE | FMW | 2 |
2003 | RUSCHIKA | JAIN | 50000 | MUMBAI | C# | 5 |
3001 | PRANOTI | SCHENDE | 55500 | PUNE | JAVA | 3 |
3002 | ANUJA | WANRE | 50500 | JAIPUR | FMW | 2 |
3003 | DEEPAM | JAUHARI | 58500 | MUMBAI | JAVA | 3 |
4001 | RAJESH | GOLD | 60500 | MUMBAI | TESTEN | 4 |
4002 | ASHWINI | BAGHAT | 54500 | NOIDA | JAVA | 3 |
4003 | RUSCHIKA | AGARWAL | 60000 | DELHI | ORACLE | 1 |
5001 | ARCHIT | SHARMA | 55500 | DELHI | TESTEN | 4 |
Tabelle 2:Manager
Manager-ID | manager_name | manager_department |
1 | Snehdeep Kaur | ORACLE |
2 | Kirti Kirtane | FMW |
3 | Abhishek Manish | JAVA |
4 | Anupam Mishra | TESTEN |
5 | Akash Kadam | C# |
Beispiel 1: Schreiben Sie eine Abfrage, um die Mitarbeiter-ID, den Vornamen, den Nachnamen und die Stadt aus der Tabelle des Mitarbeiters abzurufen, wobei „Stadt“ eine der Listen in der Tabelle enthält, nämlich Mumbai, Pune und Delhi.
SELECT EMPLOYEEID, FIRST_NAME, LAST_NAME, CITY FROM EMPLOYEES WHERE CITY IN ('MUMBAI', 'PUNE', 'DELHI');
In der obigen Anweisung haben wir die Mitarbeiter-ID, den Vor- und Nachnamen und die Stadt aus der Mitarbeitertabelle abgerufen, wobei „Stadt“ einen der Städtenamen, Mumbai, Pune und Delhi, enthält. Alle diese Städtenamen werden als Parameter im IN-Operator als Werte übergeben. Die Tabelle enthält alle Datensätze, deren Mitarbeiterorte mit der Städteliste des IN-Operatorparameters übereinstimmen.
Ausgabe:
MITARBEITERID | FIRST_NAME | NACHNAME | STADT |
1001 | VAIBHAVI | MISHRA | PUNE |
2002 | BHAVESH | JAIN | PUNE |
2003 | RUSCHIKA | JAIN | MUMBAI |
3001 | PRANOTI | SCHENDE | PUNE |
3003 | DEEPAM | JAUHARI | MUMBAI |
4001 | RAJESH | GOLD | MUMBAI |
4003 | RUSCHIKA | AGARWAL | DELHI |
5001 | ARCHIT | SHARMA | DELHI |
Es werden nur acht Mitarbeiter angezeigt, deren Stadtnamen mit der Parameterliste des IN-Operatorausdrucks übereinstimmen.
Beispiel 2: Schreiben Sie eine Abfrage, um die Mitarbeiter-ID, den Vornamen, den Nachnamen, das Gehalt und die Abteilung aus der Tabelle des Mitarbeiters abzurufen, wobei das Gehalt eine der Listen 50500, 55500 und 65500 in der Tabelle enthält.
SELECT EMPLOYEEID, FIRST_NAME, LAST_NAME, SALARY, DEPARTMENT FROM EMPLOYEES WHERE SALARY IN (50500, 55500, 65500);
In der obigen Anweisung haben wir die Mitarbeiter-ID, den Vor- und Nachnamen, das Gehalt und die Abteilung aus der Mitarbeitertabelle abgerufen, in der das Gehalt eines der Gehälter 50500, 55500 und 65500 enthält. Alle diese Gehälter werden als Parameter in übergeben IN-Operator als Werte. Die Tabelle enthält alle Datensätze, deren Mitarbeitergehälter mit der Gehaltsliste des IN-Operatorparameters übereinstimmen.
Ausgabe:
MITARBEITERID | FIRST_NAME | NACHNAME | GEHALT | ABTEILUNG |
1001 | VAIBHAVI | MISHRA | 65500 | ORACLE |
1003 | NICHIL | VANI | 50500 | FMW |
2001 | PRACHI | SHARMA | 55500 | ORACLE |
2002 | BHAVESH | JAIN | 65500 | FMW |
3001 | PRANOTI | SCHENDE | 55500 | JAVA |
3002 | ANUJA | WANRE | 50500 | FMW |
5001 | ARCHIT | SHARMA | 55500 | TESTEN |
Es werden nur sieben Mitarbeiter angezeigt, deren Gehalt mit der Parameterliste des IN-Operatorausdrucks übereinstimmt.
Beispiel 3: Schreiben Sie eine Abfrage, um die Mitarbeiter-ID, den Vornamen, den Nachnamen, das Gehalt und die Stadt von Mitarbeitern abzurufen, deren Gehalt größer als 60000 ist oder deren Stadt eine der Städtelisten „Mumbai“, „Pune“ und „Jaipur“ enthält. in der Tabelle.
SELECT EMPLOYEEID, FIRST_NAME, LAST_NAME, SALARY, CITY FROM EMPLOYEES WHERE SALARY > 60000 OR CITY IN ('PUNE', 'MUMBAI', 'JAIPUR');
In der obigen Anweisung haben wir die Mitarbeiter-ID, den Vornamen, den Nachnamen, das Gehalt und die Stadt aus der Mitarbeitertabelle abgerufen, in der das Mitarbeitergehalt größer als 60000 ist oder die Stadt des Mitarbeiters eine dieser Städtelisten enthält:„Mumbai“, „Pune“, „ Jaipur'. Der erste Teil der WHERE-Klausel der SELECT-Anweisung ist SALARY> 60000 und der letzte Teil ist CITY IN ('PUNE', 'MUMBAI', 'JAIPUR'), Da wir den ODER-Operator verwendet haben, wird das Ergebnis von beiden Bedingungen sein.
Ausgabe:
MITARBEITERID | FIRST_NAME | NACHNAME | GEHALT | STADT |
1001 | VAIBHAVI | MISHRA | 65500 | PUNE |
1003 | NICHIL | VANI | 50500 | JAIPUR |
2002 | BHAVESH | JAIN | 65500 | PUNE |
2003 | RUSCHIKA | JAIN | 50000 | MUMBAI |
3001 | PRANOTI | SCHENDE | 55500 | PUNE |
3002 | ANUJA | WANRE | 50500 | JAIPUR |
3003 | DEEPAM | JAUHARI | 58500 | MUMBAI |
4001 | RAJESH | GOLD | 60500 | MUMBAI |
Es werden nur acht Datensätze aus der Tabelle angezeigt, deren Gehalt größer als 60000 ist oder deren Städtenamen mit der Parameterliste des IN-Operatorausdrucks übereinstimmen.
Beispiel 4: Schreiben Sie eine Abfrage, um die Mitarbeiter-ID, das Gehalt, die Stadt und die Abteilung aus der Mitarbeitertabelle abzurufen, in der die Mitarbeiterabteilung eine der Listen „Oracle“, „FMW“ enthält und auch die Stadt eine der Listen „Delhi“, „Noida“ enthält. 'Pune'.
SELECT EMPLOYEEID, SALARY, CITY, DEPARTMENT FROM EMPLOYEES WHERE DEPARTMENT IN ('ORACLE', 'FMW') AND CITY IN ('PUNE', 'NOIDA', 'DELHI');
Wir haben die Mitarbeiter-ID, das Gehalt, die Stadt und die Abteilung aus der Mitarbeitertabelle in der obigen Anweisung abgerufen. Die Mitarbeiterabteilung enthält eine der Abteilungslisten, die an den IN-Operatorparameter übergeben werden. Die Stadt des Mitarbeiters enthält eine der Städtelisten, die an den IN-Operatorparameter übergeben wurden, und das Ergebnis enthält nur die Mitarbeiterdetails, die beide Bedingungen erfüllen.
Ausgabe:
MITARBEITERID | GEHALT | STADT | ABTEILUNG |
1001 | 65500 | PUNE | ORACLE |
2002 | 65500 | PUNE | FMW |
4003 | 60000 | DELHI | ORACLE |
Es gibt nur drei Datensätze aus der Employees-Tabelle, deren Mitarbeiterstadt Pune, Delhi und Noida und Department Oracle, FMW enthält.
Beispiel 5: Schreiben Sie eine Abfrage, um die Mitarbeiter-ID, den Vornamen, den Nachnamen, das Gehalt, die Stadt und die Abteilung aus der Tabelle des Mitarbeiters abzurufen, wenn das Mitarbeitergehalt größer als 60000 ist und die Stadt eine der Listen in Pune, Jaipur, Mumbai enthält oder die Abteilung eine der enthält Listen ist 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 der obigen Anweisung haben wir den ODER-Operator, den UND-Operator und den mehrfachen IN-Operator mit der SELECT-Anweisung verwendet, um die Mitarbeiter-ID, den Vornamen, den Nachnamen, das Gehalt, die Stadt und die Abteilung aus der Tabelle des Mitarbeiters abzurufen. Die SELECT-Abfrage ruft zuerst die Mitarbeiterdatensätze mit Gehalt> 60000 UND Stadt IN ('Pune', 'Mumbai', Jaipur) ab, nur diese Angestellten. Beide Bedingungen sind wahr, und am Ende von Department IN ('Java', 'Testing', 'C#') sucht diese Abfrage in der ersten Phase nach dem Ergebnis, dass die von uns abgerufenen Mitarbeiterdatensätze Department eine der Listen haben, an die wir übergeben haben IN-Operator und gehen Sie auch zu den restlichen Datensätzen in der Tabelle, wenn Datensätze mit Abteilungsnamen gefunden werden, die wir an den IN-Operator-Parameter übergeben haben, wird dieser Datensatz zum Ergebnis hinzugefügt.
Ausgabe:
MITARBEITERID | FIRST_NAME | NACHNAME | GEHALT | STADT | ABTEILUNG |
1001 | VAIBHAVI | MISHRA | 65500 | PUNE | ORACLE |
1002 | VAIBHAV | SHARMA | 60000 | NOIDA | C# |
2002 | BHAVESH | JAIN | 65500 | PUNE | FMW |
2003 | RUSCHIKA | JAIN | 50000 | MUMBAI | C# |
3001 | PRANOTI | SCHENDE | 55500 | PUNE | JAVA |
3003 | DEEPAM | JAUHARI | 58500 | MUMBAI | JAVA |
4001 | RAJESH | GOLD | 60500 | MUMBAI | TESTEN |
4002 | ASHWINI | BAGHAT | 54500 | NOIDA | JAVA |
5001 | ARCHIT | SHARMA | 55500 | DELHI | TESTEN |
Es gibt nur 9 Datensätze von Angestellten, deren Gehalt über 60000 liegt. City enthält eine der Listen, die wir als Parameter an den City IN-Operator übergeben haben, oder Department enthält eine der Listen, die wir an den Department IN-Operator übergeben haben.
Beispiel 6: Schreiben Sie eine Unterabfrage, um Mitarbeiterdetails aus der Mitarbeitertabelle abzurufen, wenn die Manager-ID größer als 2 ist, aus der Manager-Tabelle.
SELECT * FROM EMPLOYEES WHERE MANAGERID IN (SELECT MANAGERID FROM MANAGER WHERE MANAGERID > 2);
In der obigen Anweisung wird die erste Unterabfrage ausgeführt SELECT MANAGERID FROM MANAGER WHERE MANAGERID> 2; Die Ausgabe ist die Manager-ID, die größer als 2 ist, als Parameter in der WHERE-Klausel der Hauptabfrage übergeben wird, und die endgültige Ausgabe erfolgt aus der Mitarbeitertabelle, in der die Mitarbeiter-Manager-ID eine der Listen enthält, die die Ausgabe der Unterabfrage ist.
Ausgabe:
MITARBEITERID | FIRST_NAME | NACHNAME | GEHALT | STADT | ABTEILUNG | MANAGERID |
3001 | PRANOTI | SCHENDE | 55500 | PUNE | JAVA | 3 |
3003 | DEEPAM | JAUHARI | 58500 | MUMBAI | JAVA | 3 |
4002 | ASHWINI | BAGHAT | 54500 | NOIDA | JAVA | 3 |
4001 | RAJESH | GOLD | 60500 | MUMBAI | TESTEN | 4 |
5001 | ARCHIT | SHARMA | 55500 | DELHI | TESTEN | 4 |
1002 | VAIBHAV | SHARMA | 60000 | NOIDA | C# | 5 |
2003 | RUSCHIKA | JAIN | 50000 | MUMBAI | C# | 5 |
Es gibt nur sieben Datensätze aus der Mitarbeitertabelle, deren Manager-ID größer als 2 ist.
Beispiel 7: Schreiben Sie eine Unterabfrage, um die Details des Mitarbeiters abzurufen, wenn die Managerabteilung eine der Listen enthält, ist ein Orakel, Java und FMW.
SELECT * FROM EMPLOYEES WHERE MANAGERID IN (SELECT MANAGERID FROM MANAGER WHERE MANAGER_DEPARTMENT IN ('ORACLE', 'FMW', 'JAVA'));
In der obigen Anweisung rufen wir zuerst die Manager-ID aus der Manager-Tabelle ab, in der die Manager-Abteilung eine der Listen Oracle, FMW, Java enthält. Dann ruft die Hauptabfrage die Details des Mitarbeiters aus der Ausgabe der Unterabfrage ab.
Ausgabe:
MITARBEITERID | FIRST_NAME | NACHNAME | GEHALT | STADT | ABTEILUNG | MANAGERID |
1001 | VAIBHAVI | MISHRA | 65500 | PUNE | ORACLE | 1 |
2001 | PRACHI | SHARMA | 55500 | CHANDIGARH | ORACLE | 1 |
4003 | RUSCHIKA | AGARWAL | 60000 | DELHI | ORACLE | 1 |
1003 | NICHIL | VANI | 50500 | JAIPUR | FMW | 2 |
2002 | BHAVESH | JAIN | 65500 | PUNE | FMW | 2 |
3002 | ANUJA | WANRE | 50500 | JAIPUR | FMW | 2 |
3001 | PRANOTI | SCHENDE | 55500 | PUNE | JAVA | 3 |
3003 | DEEPAM | JAUHARI | 58500 | MUMBAI | JAVA | 3 |
4002 | ASHWINI | BAGHAT | 54500 | NOIDA | JAVA | 3 |
Beispiel 8: Schreiben Sie eine Abfrage, um die Mitarbeiter-ID, den Vornamen, den Nachnamen, das Gehalt und die Stadt aus der Tabelle des Mitarbeiters abzurufen, wobei das Gehalt zwischen 50.000 und 65.000 liegt, oder wenn die Stadt eine der Listen Pune, Jaipur und Mumbai enthält.
SELECT EMPLOYEEID, FIRST_NAME, LAST_NAME, SALARY, CITY FROM EMPLOYEES WHERE SALARY BETWEEN 50000 AND 65000 OR CITY IN ('PUNE', 'MUMBAI', 'JAIPUR');
In der obigen Anweisung haben wir die Mitarbeiter-ID, den Vornamen, den Nachnamen, das Gehalt und die Stadt aus der Mitarbeitertabelle abgerufen, wobei das Mitarbeitergehalt zwischen 50.000 und 65.000 liegt oder die Stadt eine der Listen Pune, Mumbai, Jaipur enthält.
Ausgabe:
MITARBEITERID | FIRST_NAME | NACHNAME | GEHALT | STADT |
1001 | VAIBHAVI | MISHRA | 65500 | PUNE |
1002 | VAIBHAV | SHARMA | 60000 | NOIDA |
1003 | NICHIL | VANI | 50500 | JAIPUR |
2001 | PRACHI | SHARMA | 55500 | CHANDIGARH |
2002 | BHAVESH | JAIN | 65500 | PUNE |
2003 | RUSCHIKA | JAIN | 50000 | MUMBAI |
3001 | PRANOTI | SCHENDE | 55500 | PUNE |
3002 | ANUJA | WANRE | 50500 | JAIPUR |
3003 | DEEPAM | JAUHARI | 58500 | MUMBAI |
4001 | RAJESH | GOLD | 60500 | MUMBAI |
4002 | ASHWINI | BAGHAT | 54500 | NOIDA |
4003 | RUSCHIKA | AGARWAL | 60000 | DELHI |
5001 | ARCHIT | SHARMA | 55500 | DELHI |