SQL-запрос для удаления определенных строк на основе сравнения с другими таблицами
В этой статье мы увидим, как удалить определенные строки на основе сравнения с другими таблицами. Мы можем выполнить эту функцию, используя подзапрос вместо условия в предложении WHERE. Подзапрос — это запрос, который появляется внутри другого запроса. Его также можно назвать вложенным запросом.
Синтаксис:
SELECT * FROM table_name WHERE column_name= ( SELECT column_name FROM table_name);
Запрос SELECT пишется после того, как предложение WHERE является подзапросом.
Чтобы удалить строку из таблицы:
Синтаксис:
DELETE FROM table_name WHERE condition;
Теперь для демонстрации выполните следующие шаги:
Шаг 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));
Запрос (демо_таблица2):
CREATE TABLE demo_table2( NAME VARCHAR(20), AGE int);
Шаг 4: Вставьте данные в таблицу
Запрос (демо_таблица1):
INSERT INTO demo_table1 VALUES ("Romy",23,"Delhi"), ("Pushkar",23,"Delhi"), ("Nikhil",24,"Punjab"), ("Rinkle",23,"Punjab"), ("Samiksha",23,"Banglore"), ("Ashtha",24,"Banglore"), ("Satish",30,"Patna"), ("Girish",30,"Patna"), ("Ram", 20 , "Patna"), ("Raj", 12, "Delhi");
Запрос (демо_таблица2):
INSERT INTO demo_table2 VALUES ("Fanny",25 ), ("Prem", 30), ("Preeti",21 ),("Samita",32);
Шаг 5. Просмотрите содержимое
Выполните приведенный ниже запрос, чтобы просмотреть содержимое таблицы.
Запрос:
SELECT * FROM demo_table1;
Выход:
Запрос:
SELECT * FROM demo_table2;
Выход:
Шаг 6. Удаление строк на основе сравнения с использованием подзапроса
Для демонстрации давайте удалим строки из demo_table1, AGE которых меньше минимального значения AGE demo_table2.
Чтобы получить минимальное значение AGE для demo_table2:
Запрос:
SELECT MIN(AGE) FROM demo_table2;
Теперь мы будем использовать приведенный выше запрос в качестве подзапроса, чтобы удалить строку со значениями, меньшими, чем значение, полученное из запроса.
Запрос:
DELETE FROM demo_table1 WHERE AGE < (SELECT MIN(AGE) FROM demo_table2);
Теперь проверьте содержимое demo_table1.
Выход:
На изображении мы видим, что теперь удалены 2 записи: («Рам», 20, «Патна»), («Радж», 12, «Дели»), поскольку обе записи имеют значение ВОЗРАСТА меньше 21 (минимальный возраст значение из demo_table2).