SQL-запрос для удаления определенных строк на основе сравнения с другими таблицами

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

В этой статье мы увидим, как удалить определенные строки на основе сравнения с другими таблицами. Мы можем выполнить эту функцию, используя подзапрос вместо условия в предложении 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).