Database
 sql >> Datenbank >  >> RDS >> Database

SQL-AUSWAHL IN

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