SQL-запрос для фильтрации таблицы с использованием другой таблицы
В этой статье мы увидим, как отфильтровать таблицу, используя другую таблицу. Мы можем выполнить эту функцию, используя подзапрос вместо условия в предложении WHERE. Запрос внутри другого запроса называется подзапросом. Его также можно назвать вложенным запросом. Один код SQL может иметь один или несколько вложенных запросов.
Синтаксис:
SELECT * FROM table_name WHERE column_name=( SELECT column_name FROM table_name);
Запрос, написанный после предложения WHERE, является подзапросом в приведенном выше синтаксисе.
Теперь для демонстрации выполните следующие шаги:
Шаг 1: Создайте базу данных
мы можем использовать следующую команду для создания базы данных с именем geeks.
Запрос:
CREATE DATABASE geeks;
Шаг 2 : Используйте базу данных
Используйте приведенный ниже оператор SQL, чтобы переключить контекст базы данных на гиков:
Запрос:
USE geeks;
Шаг 3: Определение таблицы
У нас есть две таблицы с именами «demo_table1» и «demo_table2» в нашей компьютерной базе данных.
Запрос (демо_таблица1):
CREATE TABLE demo_table1( NAME VARCHAR(20), AGE int, CITY VARCHAR(10), INCOME int);
Запрос (демо_таблица2):
CREATE TABLE demo_table2( NAME VARCHAR(20), AGE int, INCOME int);
Шаг 4: Вставьте данные в таблицу
Запрос (демо_таблица1):
INSERT INTO demo_table1 VALUES
("Romy",23,"Delhi",400000),
("Pushkar",23,"Delhi",700000),
("Nikhil",24,"Punjab",350000),
("Rinkle",23,"Punjab",600000),
("Samiksha",23,"Banglore",800000),
("Ashtha",24,"Banglore",300000),
("Satish",30,"Patna",450000),
("Girish",30,"Patna",5500000),
("Ram", 20 , "Patna",650000),
("Raj", 12, "Delhi",380000);Запрос (демо_таблица2):
INSERT INTO demo_table2 VALUES
("Fanny",25,600000 ),
("Prem", 30,450000),
("Preeti",21,250000 ),
("Samita",32,440000),
("Ozymandias",34,650000);Шаг 5: Просмотрите содержимое таблицы.
Выполните приведенный ниже запрос, чтобы просмотреть содержимое таблицы.
Запрос:
SELECT * FROM demo_table1;
Выход:

Запрос:
SELECT * FROM demo_table2;
Выход:

Шаг 6. Отфильтруйте таблицу, используя другую таблицу
Для демонстрации мы будем фильтровать данные demo_table1, чей ДОХОД больше, чем максимальный ДОХОД в semo_table2.
Чтобы получить максимальную зарплату от demo_table2:
Запрос:
SELECT MAX(INCOME) FROM demo_table2;
Используемый выше запрос будет использоваться в качестве подзапроса для фильтрации demo_table1.
Окончательный запрос:
SELECT * FROM demo_table WHERE INCOME > (SELECT MAX(INCOME) FROM demo_table2);
Выход:

На изображении видно, что данные из demo_table1 отфильтровываются, если INCOME превышает 650000 (максимальное значение дохода в demo_table2).