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).