sql >> Databáze >  >> RDS >> Database

SQL SELECT IN

SQL SELECT IN je logický operátor v jazyce Structured Query Language. Používá se v dotazech SQL ke snížení použití více operátorů 'OR'. s

Operátor IN v SQL také umožňuje snadno testovat shodu podmínky s jakoukoli hodnotou v seznamu hodnot. Snižuje počet operátorů OR v dotazech SQL.

Syntaxe operátoru IN v SQL:

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

Syntaxe poddotazu operátoru IN v SQL:

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

Ve výše uvedené syntaxi můžeme použít operátor IN také s poddotazem.

Pojďme pochopit koncept SQL SELECT IN pomocí příkladů.

Zvažte následující tabulky, které mají následující záznamy:

Tabulka 1:Zaměstnanci

ID ZAMĚSTNANCE FIRST_NAME LAST_NAME PLAT MĚSTO ODDĚLENÍ ID SPRÁVCE
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 TESTOVÁNÍ 4
4002 ASHWINI BAGHAT 54500 NOIDA JAVA 3
4003 RUCHIKA AGARWAL 60 000 DELHI ORACLE 1
5001 ARCHIT SHARMA 55500 DELHI TESTOVÁNÍ 4

Tabulka 2:Správce

Managerid název_manažera manažer_oddělení
1 Snehdeep Kaur ORACLE
2 Kirti Kirtane FMW
3 Abhishek Manish JAVA
4 Anupam Mishra TESTOVÁNÍ
5 Akash Kadam C#

Příklad 1: Napište dotaz pro získání ID zaměstnance, křestního jména, příjmení a města z tabulky zaměstnance, kde Město obsahuje jeden ze seznamů v tabulce Bombaj, Pune a Dillí.

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

Ve výše uvedeném prohlášení jsme získali ID zaměstnance, jméno a příjmení a město z tabulky zaměstnance, kde Město obsahuje jeden z názvů měst, Bombaj, Pune a Dillí. Všechna tato jména měst jsou předávána jako parametr v operátoru IN jako hodnoty. Tabulka bude obsahovat všechny záznamy, jejichž města zaměstnanců odpovídají seznamu měst operátora IN.

Výstup:

ID ZAMĚSTNANCE FIRST_NAME LAST_NAME MĚSTO
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

Zobrazuje pouze osm zaměstnanců, jejichž názvy měst odpovídají seznamu parametrů výrazu operátora IN.

Příklad 2: Napište dotaz pro získání ID zaměstnance, jména, příjmení, platu a oddělení z tabulky zaměstnance, kde plat obsahuje jeden ze seznamů v tabulce je 50500, 55500 a 65500.

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

Ve výše uvedeném příkazu jsme získali ID zaměstnance, jméno a příjmení, plat a oddělení z tabulky zaměstnance, kde plat zahrnuje jeden z platů 50500, 55500 a 65500. Všechny tyto platy jsou předány jako parametr v Operátor IN jako hodnoty. Tabulka bude obsahovat všechny záznamy, jejichž mzdy zaměstnanců odpovídají seznamu platů operátora IN.

Výstup:

ID ZAMĚSTNANCE FIRST_NAME LAST_NAME PLAT ODDĚLENÍ
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 TESTOVÁNÍ

Zobrazuje pouze sedm zaměstnanců, jejichž plat odpovídá seznamu parametrů výrazu operátora IN.

Příklad 3: Napište dotaz pro získání ID zaměstnance, křestního jména, příjmení, platu a města od zaměstnanců, jejichž plat je vyšší než 60 000 nebo město zaměstnance obsahuje jeden ze seznamů měst „Bombaj“, „Pune“ a „Džajpur“ v tabulce.

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

Ve výše uvedeném prohlášení jsme získali ID zaměstnance, jméno, příjmení, plat a město z tabulky zaměstnanců, kde je plat zaměstnance vyšší než 60 000 nebo město zaměstnance zahrnuje jedno z tohoto seznamu měst je „Bombaj“, „Pune“, „ Jaipur'. První část klauzule SELECT WHERE je SALARY> 60 000 a poslední část je CITY IN ('PUNE', 'MUMBAI', 'JAIPUR'), protože jsme použili operátor OR, výsledek bude z obou podmínek.

Výstup:

ID ZAMĚSTNANCE FIRST_NAME LAST_NAME PLAT MĚSTO
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

Zobrazuje pouze osm záznamů z tabulky, jejichž plat je vyšší než 60 000 nebo názvy měst odpovídají seznamu parametrů výrazu operátora IN.

Příklad 4: Napište dotaz pro získání ID zaměstnance, platu, města a oddělení z tabulky zaměstnanců, kde oddělení zaměstnanců obsahuje jeden ze seznamů je 'Oracle', 'FMW' a také město obsahuje jeden ze seznamů je 'Dillí', 'Noida', 'Pune'.

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

Získali jsme ID zaměstnance, plat, město a oddělení z tabulky zaměstnance ve výše uvedeném prohlášení. Oddělení zaměstnanců zahrnuje jeden ze seznamů oddělení předávaných parametru operátor IN. Město zaměstnance zahrnuje jeden ze seznamů měst předaný parametru operátoru IN a výsledek zahrnuje pouze ty údaje zaměstnance, které splňují obě podmínky.

Výstup:

ID ZAMĚSTNANCE PLAT MĚSTO ODDĚLENÍ
1001 65500 PUNE ORACLE
2002 65500 PUNE FMW
4003 60 000 DELHI ORACLE

Existují pouze tři záznamy z tabulky Zaměstnanci, jejichž město zaměstnanců zahrnuje Pune, Dillí a Noida a oddělení zahrnuje Oracle, FMW.

Příklad 5: Napište dotaz pro získání ID zaměstnance, jména, příjmení, platu, města a oddělení z tabulky zaměstnance, kde je plat zaměstnance vyšší než 60 000 a město obsahuje jeden ze seznamů v Pune, Jaipur, Mumbai nebo oddělení obsahuje jeden z seznamy je 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#');

Ve výše uvedeném příkazu jsme použili operátor OR, operátor AND a vícenásobný operátor IN s příkazem SELECT k načtení ID zaměstnance, jména, příjmení, platu, města a oddělení z tabulky zaměstnance. Dotaz SELECT nejprve načte záznamy zaměstnanců, kde plat> 60 000 AND City IN ('Pune', 'Bombaj', Jaipur), pouze tito zaměstnanci. Obě podmínky jsou splněny a na konci oddělení IN ('Java', 'Testing', 'C#') tento dotaz v první fázi vyhledá, že záznamy o zaměstnancích, které jsme získali, mají oddělení jeden ze seznamů, které jsme předali operátor IN a také přejděte na zbytek záznamů v tabulce, pokud byly nalezeny nějaké záznamy s názvem oddělení, které jsme předali parametru operátoru IN, tento záznam bude přidán k výsledku.

Výstup:

ID ZAMĚSTNANCE FIRST_NAME LAST_NAME PLAT MĚSTO ODDĚLENÍ
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 TESTOVÁNÍ
4002 ASHWINI BAGHAT 54500 NOIDA JAVA
5001 ARCHIT SHARMA 55500 DELHI TESTOVÁNÍ

Existuje pouze 9 záznamů o zaměstnancích, jejichž plat je vyšší než 60 000. Město obsahuje jeden ze seznamů, které jsme předali jako parametr operátorovi City IN, nebo Department obsahuje jeden ze seznamů, které jsme předali operátorovi oddělení IN.

Příklad 6: Napište dílčí dotaz pro získání podrobností o zaměstnancích z tabulky zaměstnanců, kde je managerid větší než 2 z tabulky manažerů.

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

Ve výše uvedeném příkazu se provede první dílčí dotaz SELECT MANAGERID FROM MANAGER WHERE MANAGERID> 2; výstupem bude ID manažera, které je větší než 2 průchody jako parametr v klauzuli hlavního dotazu WHERE, a konečný výstup bude z tabulky zaměstnanců, kde ID zaměstnance-manažera obsahuje jeden ze seznamů, který je výstupem dílčího dotazu.

Výstup:

ID ZAMĚSTNANCE FIRST_NAME LAST_NAME PLAT MĚSTO ODDĚLENÍ ID SPRÁVCE
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 TESTOVÁNÍ 4
5001 ARCHIT SHARMA 55500 DELHI TESTOVÁNÍ 4
1002 VAIBHAV SHARMA 60 000 NOIDA C# 5
2003 RUCHIKA JAIN 50 000 MUMBAI C# 5

Existuje pouze sedm záznamů z tabulky zaměstnance, jejichž ID manažera je větší než 2.

Příklad 7: Napište dílčí dotaz pro získání podrobností o zaměstnanci, kde manažerské oddělení obsahuje jeden ze seznamů Oracle, Java a FMW.

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

Ve výše uvedeném příkazu nejprve načteme ID manažera z tabulky manažerů, kde oddělení manažerů obsahuje jeden ze seznamů Oracle, FMW, Java. Poté hlavní dotaz načte podrobnosti o zaměstnanci z výstupu dílčího dotazu.

Výstup:

ID ZAMĚSTNANCE FIRST_NAME LAST_NAME PLAT MĚSTO ODDĚLENÍ ID SPRÁVCE
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

Příklad 8: Napište dotaz pro získání ID zaměstnance, jména, příjmení, platu, města z tabulky zaměstnance, kde je plat mezi 50 000 a 65 000, nebo město zahrnuje jeden ze seznamů je Pune, Jaipur a Mumbai.

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

Ve výše uvedeném prohlášení jsme získali ID zaměstnance, jméno, příjmení, plat a město z tabulky zaměstnance, kde plat zaměstnance mezi 50 000 a 65 000 nebo město zahrnuje jeden ze seznamů je Pune, Mumbai, Jaipur.

Výstup:

ID ZAMĚSTNANCE FIRST_NAME LAST_NAME PLAT MĚSTO
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. Hodnota časového pásma serveru 'AEST' není rozpoznána nebo představuje více než jedno časové pásmo

  2. Jaká je maximální velikost dotazu pro mysql?

  3. Jak získat aktuální objekt Connection v Spring JDBC

  4. Jak přidat nový sloupec do tabulky MYSQL?