Как использовать оператор IN с подзапросом в SQL?

Опубликовано: 1 Сентября, 2022

В этой статье мы увидим использование оператора IN с подзапросом в SQL. Оператор IN используется для сравнения значений столбца со списком значений. Список значений определяется после запроса IN в SQL.

Если мы не знаем точный список значений для сравнения, мы можем сгенерировать список значений с помощью запроса.

Синтаксис:

Без подзапроса:

SELECT column_name(s)
FROM table_name
WHERE column_name IN (value1, value2, ...);

с подзапросом

SELECT column_name(s)
FROM table_name
WHERE column_name IN (SELECT statement);

Теперь для демонстрации выполните следующие шаги:

Шаг 1: Создайте базу данных

мы можем использовать следующую команду для создания базы данных с именем geeks.

Запрос:

CREATE DATABASE geeks;

Шаг 2: Используйте базу данных

Используйте приведенный ниже оператор SQL, чтобы переключить контекст базы данных на гиков:

USE geeks;

Шаг 3: Определение таблицы

У нас есть следующая demo_table в нашей компьютерной базе данных. В demo_table есть данные об учениках с указанием их возраста и полученных ими оценок.

Запрос:

CREATE TABLE demo_table(
NAME VARCHAR(20),
AGE int,
GRADE VARCHAR(5));

Шаг 4: Вставьте данные в таблицу

Запрос:

INSERT INTO demo_table
VALUES ("Romy",22, "A"),
("Roshini", 20, "A"),
("Akanksha", 22, "A"),
("Shalini",23,"B"),
("Sambhavi",21,"A"),
("Meenakshi",22,"C"),
("Nikhil",24,"B"),
("Manu",25,"B"),
("Rohit",24,"C"),
("Astha",23,"A"),
("Samiksha",23,"A");

Шаг 5. Просмотрите содержимое

Выполните приведенный ниже запрос, чтобы просмотреть содержимое таблицы.

SELECT * FROM demo_table;

Выход:

Шаг 6: Использование оператора In с подзапросом

Чтобы получить данные студентов, чье имя начинается с R.

Запрос:

SELECT * FROM demo_table
WHERE NAME IN  
(SELECT NAME FROM demo_table WHERE NAME LIKE "R%") ;

Выход:

Получить данные студентов, чей возраст больше 22 лет.

Запрос:

SELECT * FROM demo_table
WHERE AGE IN  
(SELECT AGE FROM demo_table WHERE AGE>22) ;

Выход: