Database
 sql >> база данни >  >> RDS >> Database

SQL SELECT IN

SQL SELECT IN е логически оператор в езика за структурирани заявки. Използва се в SQL заявки, за да се намали използването на множество оператори „ИЛИ“. s

Операторът IN в SQL също позволява лесно да се тества дали условието съответства на всяка стойност в списък със стойности. Намалява броя на операторите ИЛИ в SQL заявките.

Синтаксис на оператор IN в SQL:

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

Синтаксис на подзаявка на оператор IN в SQL:

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

В горния синтаксис можем да използваме IN оператор и с подзаявка.

Нека разберем концепцията на SQL SELECT IN с помощта на примери.

Помислете за следните таблици, които имат следните записи:

Таблица 1:Служители

ИДЕНТИФИКАТОР НА СЛУЖИТЕЛЯ FIRST_NAME LAST_NAME ЗАПЛАТА ГРАД ОТДЕЛ MANAGERID
1001 VAIBHAVI МИШРА 65500 ПУНА ORACLE 1
1002 VAIBHAV ШАРМА 60 000 NOIDA C# 5
1003 НИХИЛ VANI 50500 ДЖАЙПУР FMW 2
2001 PRACHI ШАРМА 55500 ЧАНДИГАР ORACLE 1
2002 BHAVESH ДЖЕЙН 65500 ПУНА FMW 2
2003 РУЧИКА ДЖЕЙН 50 000 МУМБАЙ C# 5
3001 ПРАНОТИ ШЕНДЕ 55500 ПУНА JAVA 3
3002 ANUJA WANRE 50500 ДЖАЙПУР FMW 2
3003 DEEPAM ДЖАУХАРИ 58500 МУМБАЙ JAVA 3
4001 РАДЖЕШ GOUD 60500 МУМБАЙ ТЕСТВАНЕ 4
4002 ASHWINI BAGHAT 54500 NOIDA JAVA 3
4003 РУЧИКА AGARWAL 60 000 ДЕЛХИ ORACLE 1
5001 АРХИТ ШАРМА 55500 ДЕЛХИ ТЕСТВАНЕ 4

Таблица 2:Мениджър

Managerid име_на_мениджър мениджърски отдел
1 Снехдип Каур ORACLE
2 Кирти Киртане FMW
3 Абхишек Маниш JAVA
4 Анупам Мишра ТЕСТВАНЕ
5 Акаш Кадам C#

Пример 1: Напишете заявка, за да извлечете идентификатора на служителя, собственото име, фамилията и града от таблицата на служителя, където град включва един от списъците е Мумбай, Пуна и Делхи в таблицата.

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

В горното изявление извлечехме идентификатора на служителя, име и фамилия и град от таблицата на служителя, където град включва едно от имената на градовете, Мумбай, Пуна и Делхи. Всички тези имена на градове се предават като параметър в оператора IN като стойности. Таблицата ще се отнася за всички онези записи, чиито градове на служителите съвпадат със списъка с градове на оператора IN.

Изход:

ИДЕНТИФИКАТОР НА СЛУЖИТЕЛЯ FIRST_NAME LAST_NAME ГРАД
1001 VAIBHAVI МИШРА ПУНА
2002 BHAVESH ДЖЕЙН ПУНА
2003 РУЧИКА ДЖЕЙН МУМБАЙ
3001 PRANOTI ШЕНДЕ ПУНА
3003 DEEPAM ДЖАУХАРИ МУМБАЙ
4001 РАДЖЕШ GOUD МУМБАЙ
4003 РУЧИКА AGARWAL ДЕЛХИ
5001 АРХИТ ШАРМА ДЕЛХИ

Показва само осем служители, чиито имена на градове съвпадат със списъка с параметри на оператора IN.

Пример 2: Напишете заявка, за да извлечете идентификатора на служителя, собственото име, фамилията, заплатата и отдела от таблицата на служителя, където заплатата включва един от списъците е 50500, 55500 и 65500 в таблицата.

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

В горното изявление извлечехме идентификатора на служителя, име и фамилия, заплата и отдел от таблицата на служителя, където заплатата включва една от заплатите са 50500, 55500 и 65500. Всички тези заплати се предават като параметър в IN оператор като стойности. Таблицата ще включва всички онези записи, чиито заплати на служителите съвпадат със списъка със заплати за параметри на IN оператора.

Изход:

ИДЕНТИФИКАТОР НА СЛУЖИТЕЛЯ FIRST_NAME LAST_NAME ЗАПЛАТА ОТДЕЛ
1001 VAIBHAVI МИШРА 65500 ORACLE
1003 НИХИЛ VANI 50500 FMW
2001 PRACHI ШАРМА 55500 ORACLE
2002 BHAVESH ДЖЕЙН 65500 FMW
3001 PRANOTI ШЕНДЕ 55500 JAVA
3002 ANUJA WANRE 50500 FMW
5001 АРХИТ ШАРМА 55500 ТЕСТВАНЕ

Показва само седем служители, чиято заплата съответства на списъка с параметри на оператора IN.

Пример 3: Напишете заявка, за да извлечете идентификационния номер на служителя, собственото име, фамилията, заплатата и града от служители, при които заплатата на служителите е по-голяма от 60 000 или градът на служителите включва един от списъците с градове е „Мумбай“, „Пуна“ и „Джайпур“ в таблицата.

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

В горното изявление извлечехме идентификатор на служител, собствено име, фамилия, заплата и град от таблицата на служителите, където заплатата на служителите е по-голяма от 60 000 или градът на служителите включва един от този списък с градове е „Мумбай“, „Пуна“, „ Джайпур“. Първата част на клаузата SELECT WHERE е SALARY> 60000 и последната част е CITY IN ('PUNE', 'MUMBAI', 'JAIPUR'), тъй като използвахме оператор ИЛИ, резултатът ще бъде и от двете условия.

Изход:

ИДЕНТИФИКАТОР НА СЛУЖИТЕЛЯ FIRST_NAME LAST_NAME ЗАПЛАТА ГРАД
1001 VAIBHAVI МИШРА 65500 ПУНА
1003 НИХИЛ VANI 50500 ДЖАЙПУР
2002 BHAVESH ДЖЕЙН 65500 ПУНА
2003 РУЧИКА ДЖЕЙН 50 000 МУМБАЙ
3001 PRANOTI ШЕНДЕ 55500 ПУНА
3002 ANUJA WANRE 50500 ДЖАЙПУР
3003 DEEPAM ДЖАУХАРИ 58500 МУМБАЙ
4001 РАДЖЕШ GOUD 60500 МУМБАЙ

Той показва само осем записа от таблицата, чиято заплата е по-голяма от 60 000 или имената на градовете съвпадат със списъка с параметри на оператора IN.

Пример 4: Напишете заявка за извличане на идентификатор на служител, заплата, град и отдел от таблицата на служителите, където отделът за служители включва един от списъците е „Oracle“, „FMW“, а също така град включва един от списъците „Делхи“, „Noida“, „Пуна“.

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

Извлечехме идентификатора на служителя, заплатата, града и отдела от таблицата на служителя в горното изявление. Отделът на служителите включва един от списъците с отдели, предадени на параметъра IN оператор. Градът на служителите включва един от списъците с градове, предадени на параметъра на оператора IN, а резултатът включва само тези данни за служителите, които отговарят на двете условия.

Изход:

ИДЕНТИФИКАТОР НА СЛУЖИТЕЛЯ ЗАПЛАТА ГРАД ОТДЕЛ
1001 65500 ПУНА ORACLE
2002 65500 ПУНА FMW
4003 60 000 ДЕЛХИ ORACLE

Има само три записа от таблицата на служителите, чийто град на служителите включва Пуна, Делхи и Нойда, а отделът включва Oracle, FMW.

Пример 5: Напишете заявка за извличане на идентификационен номер на служител, собствено име, фамилия, заплата, град и отдел от таблицата на служителя, където заплатата на служителя е по-голяма от 60 000 и град включва един от списъците в Пуна, Джайпур, Мумбай или департамент включва един от списъци е 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#');

В горния израз използвахме оператор OR, оператор AND и оператор множествен IN с оператора SELECT, за да извлечем идентификатора на служителя, собственото име, фамилията, заплатата, града и отдела от таблицата на служителя. Заявката SELECT първо извлича записите на служителите, където заплата> 60 000 И City IN („Пуна“, „Мумбай“, Джайпур), само тези служители. И двете условия са верни и в края на отдел IN ('Java', 'Testing', 'C#'), тази заявка ще търси в първата фаза резултат, че тези записи на служителите, които извлечехме, имат отделен един от списъците, които сме предали на IN оператор и също така отидете на останалите записи в таблицата, ако са открити записи с име на отдел, което сме предали на параметъра IN оператор, този запис ще бъде добавен към резултата.

Изход:

ИДЕНТИФИКАТОР НА СЛУЖИТЕЛЯ FIRST_NAME LAST_NAME ЗАПЛАТА ГРАД ОТДЕЛ
1001 VAIBHAVI МИШРА 65500 ПУНА ORACLE
1002 VAIBHAV ШАРМА 60 000 NOIDA C#
2002 BHAVESH ДЖЕЙН 65500 ПУНА FMW
2003 РУЧИКА ДЖЕЙН 50 000 МУМБАЙ C#
3001 PRANOTI ШЕНДЕ 55500 ПУНА JAVA
3003 DEEPAM ДЖАУХАРИ 58500 МУМБАЙ JAVA
4001 РАДЖЕШ GOUD 60500 МУМБАЙ ТЕСТВАНЕ
4002 ASHWINI BAGHAT 54500 NOIDA JAVA
5001 АРХИТ ШАРМА 55500 ДЕЛХИ ТЕСТВАНЕ

Има само 9 записа на служители, чиято заплата е по-голяма от 60 000. City включва един от списъците, които сме предали като параметър на оператора City IN или Отдел включва един от списъците, които сме предали на оператора Department IN.

Пример 6: Напишете подзаявка, за да извлечете подробности за служителите от таблицата на служителите, където managerid е по-голям от 2 от таблицата на мениджъра.

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

В горния израз първата подзаявка ще бъде изпълнена ИЗБЕРЕТЕ МЕНИДЖЕРИД ОТ МЕНИДЖЕР, КЪДЕ МЕНИДЖЕРИД> 2; изходът ще бъде идентификатор на мениджър, който е по-голям от 2 прохода като параметър в клаузата WHERE на основната заявка, а крайният изход ще бъде от таблицата на служителите, където идентификаторът на служител-мениджър включва един от списъците, който е резултатът от подзаявка.

Изход:

ИДЕНТИФИКАТОР НА СЛУЖИТЕЛЯ FIRST_NAME LAST_NAME ЗАПЛАТА ГРАД ОТДЕЛ MANAGERID
3001 PRANOTI ШЕНДЕ 55500 ПУНА JAVA 3
3003 DEEPAM ДЖАУХАРИ 58500 МУМБАЙ JAVA 3
4002 ASHWINI BAGHAT 54500 NOIDA JAVA 3
4001 РАДЖЕШ GOUD 60500 МУМБАЙ ТЕСТВАНЕ 4
5001 АРХИТ ШАРМА 55500 ДЕЛХИ ТЕСТВАНЕ 4
1002 VAIBHAV ШАРМА 60 000 NOIDA C# 5
2003 РУЧИКА ДЖЕЙН 50 000 МУМБАЙ C# 5

Има само седем записа от таблицата на служителя, чийто идентификационен номер на мениджър е по-голям от 2.

Пример 7: Напишете подзаявка, за да получите подробности за служителя, където мениджърският отдел включва един от списъците е oracle, java и FMW.

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

В горното изявление първо извличаме идентификатора на мениджъра от таблицата на мениджъра, където мениджърският отдел включва един от списъците е Oracle, FMW, Java. Тогава основната заявка ще извлече подробности за служителя от изхода на подзаявката.

Изход:

ИДЕНТИФИКАТОР НА СЛУЖИТЕЛЯ FIRST_NAME LAST_NAME ЗАПЛАТА ГРАД ОТДЕЛ MANAGERID
1001 VAIBHAVI МИШРА 65500 ПУНА ORACLE 1
2001 PRACHI ШАРМА 55500 ЧАНДИГАР ORACLE 1
4003 РУЧИКА AGARWAL 60 000 ДЕЛХИ ORACLE 1
1003 НИХИЛ VANI 50500 ДЖАЙПУР FMW 2
2002 BHAVESH ДЖЕЙН 65500 ПУНА FMW 2
3002 ANUJA WANRE 50500 ДЖАЙПУР FMW 2
3001 PRANOTI ШЕНДЕ 55500 ПУНА JAVA 3
3003 DEEPAM ДЖАУХАРИ 58500 МУМБАЙ JAVA 3
4002 ASHWINI BAGHAT 54500 NOIDA JAVA 3

Пример 8: Напишете заявка, за да извлечете идентификатор на служител, собствено име, фамилия, заплата, град от таблицата на служителя, където заплатата е между 50000 и 65000 или град включва един от списъците е Пуна, Джайпур и Мумбай.

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

В горното изявление извадихме идентификационния номер на служителя, собственото име, фамилията, заплатата и града от таблицата на служителя, където заплатата на служителя между 50 000 и 65 000 или градът включва един от списъците е Пуна, Мумбай, Джайпур.

Изход:

ИДЕНТИФИКАТОР НА СЛУЖИТЕЛЯ FIRST_NAME LAST_NAME ЗАПЛАТА ГРАД
1001 VAIBHAVI МИШРА 65500 ПУНА
1002 VAIBHAV ШАРМА 60 000 NOIDA
1003 НИХИЛ VANI 50500 ДЖАЙПУР
2001 PRACHI ШАРМА 55500 ЧАНДИГАР
2002 BHAVESH ДЖЕЙН 65500 ПУНА
2003 РУЧИКА ДЖЕЙН 50 000 МУМБАЙ
3001 PRANOTI ШЕНДЕ 55500 ПУНА
3002 ANUJA WANRE 50500 ДЖАЙПУР
3003 DEEPAM ДЖАУХАРИ 58500 МУМБАЙ
4001 РАДЖЕШ GOUD 60500 МУМБАЙ
4002 ASHWINI BAGHAT 54500 NOIDA
4003 РУЧИКА AGARWAL 60 000 ДЕЛХИ
5001 АРХИТ ШАРМА 55500 ДЕЛХИ


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да филтрирате редове без NULL в колона

  2. Intel обречен ли е в пространството на сървърния процесор?

  3. Колко RAM се нуждае от вашия нов сървър за база данни?

  4. Създаване на планове за поддръжка на база данни

  5. Обръщане на внимание на оценките