Database
 sql >> Baza danych >  >> RDS >> Database

SQL WYBIERZ W

SQL SELECT IN jest operatorem logicznym w Structured Query Language. Jest używany w zapytaniach SQL w celu zmniejszenia użycia wielu operatorów 'OR'. s

Operator IN w SQL pozwala również na łatwe testowanie, czy warunek pasuje do dowolnej wartości z listy wartości. Zmniejsza liczbę operatorów OR w zapytaniach SQL.

Składnia operatora IN w SQL:

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

Składnia podzapytania operatora IN w SQL:

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

W powyższej składni możemy również użyć operatora IN z podzapytaniem.

Rozumiemy koncepcję SQL SELECT IN za pomocą przykładów.

Rozważ następujące tabele, które zawierają następujące zapisy:

Tabela 1:Pracownicy

ID PRACOWNIKA FIRST_NAME LAST_NAME WYNAGRODZENIE MIASTO DZIAŁ IDENTYFIKATOR KIEROWCY
1001 VAIBHAVI MISHRA 65500 PUNE WYROCZNIA 1
1002 VAIBHAV SHARMA 60000 NOIDA C# 5
1003 NIKHIL VANI 50500 JAIPUR FMW 2
2001 PRACI SHARMA 55500 CZANDIGAR WYROCZNIA 1
2002 PRZYJMUJ SIĘ JAIN 65500 PUNE FMW 2
2003 RUCHIKA JAIN 50000 MUMBAJ C# 5
3001 PRANOTI SHENDE 55500 PUNE JAVA 3
3002 ANUJA WANRE 50500 JAIPUR FMW 2
3003 DEEPAM JAUHARI 58500 MUMBAJ JAVA 3
4001 RAJESH GOUD 60500 MUMBAJ TESTOWANIE 4
4002 ASHWINI TORBA 54500 NOIDA JAVA 3
4003 RUCHIKA AGARWAL 60000 DELHI WYROCZNIA 1
5001 ARCHIT SHARMA 55500 DELHI TESTOWANIE 4

Tabela 2:Menedżer

Identyfikator menedżera nazwa_menedżera manager_department
1 Snehdeep Kaur WYROCZNIA
2 Kirti Kirtane FMW
3 Abhishek Manish JAVA
4 Anupam Mishra TESTOWANIE
5 Akasz Kadam C#

Przykład 1: Napisz zapytanie, aby pobrać identyfikator pracownika, imię, nazwisko i miasto z tabeli pracownika, przy czym miasto zawiera jedną z list w tabeli:Mumbai, Pune i Delhi.

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

W powyższym oświadczeniu pobraliśmy identyfikator pracownika, imię i nazwisko oraz miasto z tabeli pracowników, gdzie miasto zawiera jedną z nazw miasta, Mumbai, Pune i Delhi. Wszystkie te nazwy miast są przekazywane jako parametr w operatorze IN jako wartości. W tabeli zostaną uwzględnione wszystkie rekordy, których miasta pracowników są zgodne z listą miast parametru operatora IN.

Wyjście:

ID PRACOWNIKA FIRST_NAME LAST_NAME MIASTO
1001 VAIBHAVI MISHRA PUNE
2002 PRZYJMUJ SIĘ JAIN PUNE
2003 RUCHIKA JAIN MUMBAJ
3001 PRANOTI SHENDE PUNE
3003 DEEPAM JAUHARI MUMBAJ
4001 RAJESH GOUD MUMBAJ
4003 RUCHIKA AGARWAL DELHI
5001 ARCHIT SHARMA DELHI

Pokazuje tylko ośmiu pracowników, których nazwy miast pasują do listy parametrów wyrażenia operatora IN.

Przykład 2: Napisz zapytanie, aby pobrać identyfikator pracownika, imię, nazwisko, wynagrodzenie i dział z tabeli pracownika, gdzie wynagrodzenie zawiera jedną z list to 50500, 55500 i 65500 w tabeli.

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

W powyższym zestawieniu pobraliśmy identyfikator pracownika, imię i nazwisko, wynagrodzenie i dział z tabeli pracownika, gdzie wynagrodzenie zawiera jedną z pensji to 50500, 55500 i 65500. Wszystkie te pensje są przekazywane jako parametr w Operator IN jako wartości. W tabeli zostaną uwzględnione wszystkie rekordy, których pensje pracowników są zgodne z listą wynagrodzeń parametru operatora IN.

Wyjście:

ID PRACOWNIKA FIRST_NAME LAST_NAME WYNAGRODZENIE DZIAŁ
1001 VAIBHAVI MISHRA 65500 WYROCZNIA
1003 NIKHIL VANI 50500 FMW
2001 PRACI SHARMA 55500 WYROCZNIA
2002 PRZYJMUJ SIĘ JAIN 65500 FMW
3001 PRANOTI SHENDE 55500 JAVA
3002 ANUJA WANRE 50500 FMW
5001 ARCHIT SHARMA 55500 TESTOWANIE

Pokazuje tylko siedmiu pracowników, których wynagrodzenie odpowiada liście parametrów wyrażenia operatora IN.

Przykład 3: Napisz zapytanie, aby pobrać identyfikator pracownika, imię, nazwisko, wynagrodzenie i miasto od pracowników, dla których wynagrodzenie pracownika jest większe niż 60000 lub miasto pracownika zawiera jedną z list miast to „Mumbai”, „Pune” i „Jaipur” w tabeli.

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

W powyższym oświadczeniu pobraliśmy identyfikator pracownika, imię, nazwisko, wynagrodzenie i miasto z tabeli pracowników, w której wynagrodzenie pracownika jest większe niż 60000 lub miasto pracownika zawiera jedno z tych miast to „Mumbai”, „Pune”, „ Jaipur”. Pierwsza część instrukcji SELECT WHERE to SALARY> 60000 a ostatnia część to CITY IN („PUNE”, „MUMBAI”, „JAIPUR”), ponieważ użyliśmy operatora OR, wynik będzie pochodził z obu warunków.

Wyjście:

ID PRACOWNIKA FIRST_NAME LAST_NAME WYNAGRODZENIE MIASTO
1001 VAIBHAVI MISHRA 65500 PUNE
1003 NIKHIL VANI 50500 JAIPUR
2002 PRZYJMUJ SIĘ JAIN 65500 PUNE
2003 RUCHIKA JAIN 50000 MUMBAJ
3001 PRANOTI SHENDE 55500 PUNE
3002 ANUJA WANRE 50500 JAIPUR
3003 DEEPAM JAUHARI 58500 MUMBAJ
4001 RAJESH GOUD 60500 MUMBAJ

Pokazuje tylko osiem rekordów z tabeli, których wynagrodzenie jest większe niż 60000 lub nazwy miast pasują do listy parametrów wyrażenia operatora IN.

Przykład 4: Napisz zapytanie, aby pobrać identyfikator pracownika, wynagrodzenie, miasto i dział z tabeli pracowników, w której dział pracowników zawiera jedną z list to „Oracle”, „FMW”, a także miasto zawiera jedną z list to „Delhi”, „Noida”, „Pune”.

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

Pobraliśmy identyfikator pracownika, wynagrodzenie, miasto i dział z tabeli pracownika w powyższym zestawieniu. Dział pracowniczy zawiera jedną z list działów przekazanych do parametru operatora IN. Miasto pracownika zawiera jedną z list miast przekazanych do parametru operatora IN, a wynik zawiera tylko te dane pracownika, które spełniają oba warunki.

Wyjście:

ID PRACOWNIKA WYNAGRODZENIE MIASTO DZIAŁ
1001 65500 PUNE WYROCZNIA
2002 65500 PUNE FMW
4003 60000 DELHI WYROCZNIA

W tabeli Employees są tylko trzy rekordy, których miasto pracownika obejmuje Pune, Delhi i Noida, a dział obejmuje Oracle, FMW.

Przykład 5: Napisz zapytanie, aby pobrać identyfikator pracownika, imię, nazwisko, wynagrodzenie, miasto i departament z tabeli pracownika, w której wynagrodzenie pracownika jest większe niż 60000, a miasto zawiera jedną z list w Pune, Jaipur, Bombaju lub departament zawiera jedną z list to 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#');

W powyższej instrukcji użyliśmy operatora OR, operatora AND i wielu operatorów IN z instrukcją SELECT w celu pobrania identyfikatora pracownika, imienia, nazwiska, wynagrodzenia, miasta i działu z tabeli pracownika. Zapytanie SELECT najpierw pobiera rekordy pracowników, w których wynagrodzenie> 60000 AND City IN („Pune”, „Mumbai”, Jaipur), tylko ci pracownicy. Oba warunki są prawdziwe, a na końcu działu IN („Java”, „Testowanie”, „C#”) to zapytanie wyszuka w pierwszej fazie, że te rekordy pracowników, które pobraliśmy, mając dział jedną z list, które przekazaliśmy do Operator IN, a także przejdź do pozostałych rekordów w tabeli, jeśli jakiekolwiek znalezione rekordy z nazwą działu przekazaliśmy do parametru operatora IN, który zostanie dodany do wyniku.

Wyjście:

ID PRACOWNIKA FIRST_NAME LAST_NAME WYNAGRODZENIE MIASTO DZIAŁ
1001 VAIBHAVI MISHRA 65500 PUNE WYROCZNIA
1002 VAIBHAV SHARMA 60000 NOIDA C#
2002 PRZYJMUJ SIĘ JAIN 65500 PUNE FMW
2003 RUCHIKA JAIN 50000 MUMBAJ C#
3001 PRANOTI SHENDE 55500 PUNE JAVA
3003 DEEPAM JAUHARI 58500 MUMBAJ JAVA
4001 RAJESH GOUD 60500 MUMBAJ TESTOWANIE
4002 ASHWINI TORBA 54500 NOIDA JAVA
5001 ARCHIT SHARMA 55500 DELHI TESTOWANIE

Istnieje tylko 9 rekordów pracowników, których wynagrodzenie przekracza 60000. Miasto zawiera jedną z list, które przekazaliśmy jako parametr operatorowi City IN lub Department zawiera jedną z list, które przekazaliśmy operatorowi Department IN.

Przykład 6: Napisz podzapytanie, aby pobrać dane pracownika z tabeli pracowników, w której identyfikator menedżera jest większy niż 2 z tabeli menedżerów.

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

W powyższym oświadczeniu pierwsze podzapytanie zostanie wykonane SELECT MANAGERID FROM MANAGER WHERE MANAGERID> 2; wyjściem będzie identyfikator menedżera, który jest większy niż 2, jako parametr w klauzuli WHERE głównego zapytania, a końcowym wynikiem będzie tabela pracowników, w której identyfikator pracownika-kierownika zawiera jedną z list, która jest wynikiem podzapytania.

Wyjście:

ID PRACOWNIKA FIRST_NAME LAST_NAME WYNAGRODZENIE MIASTO DZIAŁ IDENTYFIKATOR KIEROWCY
3001 PRANOTI SHENDE 55500 PUNE JAVA 3
3003 DEEPAM JAUHARI 58500 MUMBAJ JAVA 3
4002 ASHWINI TORBA 54500 NOIDA JAVA 3
4001 RAJESH GOUD 60500 MUMBAJ TESTOWANIE 4
5001 ARCHIT SHARMA 55500 DELHI TESTOWANIE 4
1002 VAIBHAV SHARMA 60000 NOIDA C# 5
2003 RUCHIKA JAIN 50000 MUMBAJ C# 5

Jest tylko siedem rekordów z tabeli pracownika, którego identyfikator kierownika jest większy niż 2.

Przykład 7: Napisz podzapytanie, aby pobrać dane pracownika, w którym dział kierownika zawiera jedną z list, czyli wyrocznię, javę i FMW.

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

W powyższym oświadczeniu najpierw pobieramy identyfikator menedżera z tabeli menedżerów, w której dział menedżera zawiera jedną z list to Oracle, FMW, Java. Następnie główne zapytanie pobierze dane pracownika z wyniku podzapytania.

Wyjście:

ID PRACOWNIKA FIRST_NAME LAST_NAME WYNAGRODZENIE MIASTO DZIAŁ IDENTYFIKATOR KIEROWCY
1001 VAIBHAVI MISHRA 65500 PUNE WYROCZNIA 1
2001 PRACI SHARMA 55500 CZANDIGAR WYROCZNIA 1
4003 RUCHIKA AGARWAL 60000 DELHI WYROCZNIA 1
1003 NIKHIL VANI 50500 JAIPUR FMW 2
2002 PRZYJMUJ SIĘ JAIN 65500 PUNE FMW 2
3002 ANUJA WANRE 50500 JAIPUR FMW 2
3001 PRANOTI SHENDE 55500 PUNE JAVA 3
3003 DEEPAM JAUHARI 58500 MUMBAJ JAVA 3
4002 ASHWINI TORBA 54500 NOIDA JAVA 3

Przykład 8: Napisz zapytanie, aby pobrać identyfikator pracownika, imię, nazwisko, wynagrodzenie, miasto z tabeli pracownika, gdzie wynagrodzenie wynosi od 50000 do 65000 lub miasto zawiera jedną z list Pune, Jaipur i Mumbai.

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

W powyższym oświadczeniu pobraliśmy identyfikator pracownika, imię, nazwisko, pensję i miasto z tabeli pracownika, w której wynagrodzenie pracownika wynosi od 50000 do 65000 lub miasto zawiera jedną z list to Pune, Mumbai, Jaipur.

Wyjście:

ID PRACOWNIKA FIRST_NAME LAST_NAME WYNAGRODZENIE MIASTO
1001 VAIBHAVI MISHRA 65500 PUNE
1002 VAIBHAV SHARMA 60000 NOIDA
1003 NIKHIL VANI 50500 JAIPUR
2001 PRACI SHARMA 55500 CZANDIGAR
2002 PRZYJMUJ SIĘ JAIN 65500 PUNE
2003 RUCHIKA JAIN 50000 MUMBAJ
3001 PRANOTI SHENDE 55500 PUNE
3002 ANUJA WANRE 50500 JAIPUR
3003 DEEPAM JAUHARI 58500 MUMBAJ
4001 RAJESH GOUD 60500 MUMBAJ
4002 ASHWINI TORBA 54500 NOIDA
4003 RUCHIKA AGARWAL 60000 DELHI
5001 ARCHIT SHARMA 55500 DELHI


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Śledzenie automatycznych aktualizacji statystyk

  2. OGRANICZENIE KLUCZA OBCEGO SQL:Kompletny, łatwy przewodnik dla początkujących

  3. Metody tworzenia kopii zapasowych AWS RDS

  4. Tworzenie prostej aplikacji internetowej za pomocą funkcji Bottle, SQLAlchemy i Twitter API

  5. Zaawansowany SQL:odmiany i różne przypadki użycia instrukcji Insert T-SQL